MATLAB Answers

0

How to store vectors from each for loop in a matrix

Asked by Mike Mierlo van on 9 Oct 2019
Latest activity Edited by meghannmarie on 9 Oct 2019
Hi I have a for loop. The result of every iteration is a rowvector. I want all rowvectors of the for loop stored as one matrix. Each row is the result of one iteration.
Simplified example:
if true
X= 1:0.1:2;
for i = 1:length(X)
A=4
B= 1:5
Y= A.*X(i)+B
end
end
The end result shoud be an 11 x 5 matrix. Indexing will give errors, so will starting with an empty array.

  4 Comments

Show 1 older comment
You Da Man!
I tried Y(i)=A.X(i)+B which was giving me a hard time. The ,: made the difference. Thank you!
You do not need a loop, just
>> A*X(:) + B % for MATLAB >= R2016b
Or for earlier versions use bsxfun:
>> bsxfun(@plus,A*X(:),B)
ans =
5.0000 6.0000 7.0000 8.0000 9.0000
5.4000 6.4000 7.4000 8.4000 9.4000
5.8000 6.8000 7.8000 8.8000 9.8000
6.2000 7.2000 8.2000 9.2000 10.2000
6.6000 7.6000 8.6000 9.6000 10.6000
7.0000 8.0000 9.0000 10.0000 11.0000
7.4000 8.4000 9.4000 10.4000 11.4000
7.8000 8.8000 9.8000 10.8000 11.8000
8.2000 9.2000 10.2000 11.2000 12.2000
8.6000 9.6000 10.6000 11.6000 12.6000
9.0000 10.0000 11.0000 12.0000 13.0000
For the simplified version this is OK. But in my sophisticated version is A and B an array too, so I think in that case an loop fits best.

Sign in to comment.

1 Answer

Answer by meghannmarie on 9 Oct 2019
Edited by meghannmarie on 9 Oct 2019
 Accepted Answer

if true
X= 1:0.1:2;
A = 4;
B = 1:5;
Y = nan(length(X),length(B));
for i = 1:length(X)
Y(i,:) = A.*X(i)+B;
end
end

  0 Comments

Sign in to comment.