MATLAB Answers

using 2 indexs for loop

2 views (last 30 days)
Hi
how can i optimize this loop, if i want to include another indexing
mHome is an 15001x28 array
mBall is an 15001x3 array
for i=1:length(mHome)
output1(i,1)=pdist([mHome(i,1:2);mBall(i,1:2)]);
output1(i,2)=pdist([mHome(i,3:4);mBall(i,1:2)]);
output1(i,3)=pdist([mHome(i,5:6);mBall(i,1:2)]);
output1(i,4)=pdist([mHome(i,7:8);mBall(i,1:2)]);
output1(i,5)=pdist([mHome(i,9:10);mBall(i,1:2)]);
output1(i,6)=pdist([mHome(i,11:12);mBall(i,1:2)]);
output1(i,7)=pdist([mHome(i,13:14);mBall(i,1:2)]);
output1(i,8)=pdist([mHome(i,15:16);mBall(i,1:2)]);
output1(i,9)=pdist([mHome(i,17:18);mBall(i,1:2)]);
output1(i,10)=pdist([mHome(i,19:20);mBall(i,1:2)]);
output1(i,11)=pdist([mHome(i,21:22);mBall(i,1:2)]);
output1(i,12)=pdist([mHome(i,23:24);mBall(i,1:2)]);
output1(i,13)=pdist([mHome(i,25:26);mBall(i,1:2)]);
output1(i,14)=pdist([mHome(i,27:28);mBall(i,1:2)]);
end
% I have tried this but it does not work
for i=1:length(mHome)
for k=1:size(mHome,2)
output1(i,k)=pdist([mHome(i,k);mBall(i,1:2)]);
end
end

  3 Comments

madhan ravi
madhan ravi on 21 Mar 2019
output1(k,1)=pdist([mHome(k,(k*2)-1:k*2);mBall(k,1:2)]);
% Replaced i with k, assuming you have preallocated before the loop (good practice).
Index in position 2 exceeds array bounds (must not exceed 28).
Error in Velocity (line 76)
output2(k,1)=pdist([mHome(k,(k*2)-1:k*2);mBall(k,1:2)]);
i get this error mHome is a 15001x28 array
madhan ravi
madhan ravi on 21 Mar 2019
Even after the below?
for k=1:size(mHome,2)
output1(k,1)=pdist([mHome(k,(k*2)-1:k*2);mBall(k,1:2)]);
end
What the size of mBall?
Morten Jørgensen
Morten Jørgensen on 21 Mar 2019
mBall is a 15001x3 array.
but im only using the first 2 columms
my output should be a 15001x14 array

Sign in to comment.

Accepted Answer

Thorsten
Thorsten on 21 Mar 2019
for i=1:length(mHome)
for k=1:2:size(mHome,2)-1
output1(i,k)=pdist([mHome(i,k:k+1);mBall(i,1:2)]);
end
end

  1 Comment

Morten Jørgensen
Morten Jørgensen on 22 Mar 2019
many thanks.
the only problem is that the output is a 15001x27 array and it should be a 15001x27 array.
right now everyother column is a colum with 0

Sign in to comment.

More Answers (0)

Tags


Translated by