vectorization my user defined function

3 views (last 30 days)
I have the following array manipulations. How can i convert for loop'for loop' in a Vectorized expression\function.
time =[
5 10
3 5
5 3
5 7
3 5];
cost =[
6 3
4 3
7 10
10 5
14 9];
x=[1 1 1 1 1;2 2 2 2 2;1 2 1 2 1];
Np=size(x,1)
for i=1:Np
fun(i,1:2) = [max([time(1,x(i,1))+time(3,x(i,3))+time(5,x(i,5)),...
time(1,x(i,1))+time(4,x(i,4)),time(2,x(i,2))+...
time(5,x(i,5))]),cost(1,x(i,1))+cost(2,x(i,2))+...
cost(3,x(i,3))+cost(4,x(i,4))+cost(5,x(i,5))];
end
  2 Comments
Adarsh  Tiwari
Adarsh Tiwari on 6 Dec 2021
Thanks DGM
It is definitely more compact than mine but I needed vectorized form.

Sign in to comment.

Accepted Answer

Abolfazl Chaman Motlagh
Abolfazl Chaman Motlagh on 5 Dec 2021
a simple quick solution is :
time =[5,10;3,5;5,3;5,7;3,5];
cost =[6,3;4,3;7,10;10,5;14,9];
x=[1 1 1 1 1;2 2 2 2 2;1 2 1 2 1];
fun = [max([time(1,x(:,1))'+time(3,x(:,3))'+time(5,x(:,5))',...
time(1,x(:,1))'+time(4,x(:,4))',time(2,x(:,2))'+...
time(5,x(:,5))'],[],2),cost(1,x(:,1))'+cost(2,x(:,2))'+...
cost(3,x(:,3))'+cost(4,x(:,4))'+cost(5,x(:,5))']
fun = 3×2
13 41 18 30 13 35
  1 Comment
Adarsh  Tiwari
Adarsh Tiwari on 6 Dec 2021
It serves my purpose. i may now go ahead with my code.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by