Matrix from a for FOR loop with IF conditioning
1 view (last 30 days)
Show older comments
Agent Cooper
on 25 Apr 2014
Commented: Jos (10584)
on 25 Apr 2014
I have the following problem:
A = [1 2 3; 4 5 6; 7 8 9]
for i = 1:n
if rem(i,2)== 0
x = fliplr(D(i,:))
else x = D(i,:)
end
B(i) = x
end
I'm trying to get the B matrix that should look like
B = [1 2 3; 6 5 4; 7 8 9]
but I get the following error message instead
In an assignment A(I) = B, the number of elements in B and I must be the same.
Error in back_and_forth (line 16)
B(i) = x
Could anyone help me with this?
0 Comments
Accepted Answer
Azzi Abdelmalek
on 25 Apr 2014
Edited: Azzi Abdelmalek
on 25 Apr 2014
A = [1 2 3; 4 5 6; 7 8 9]
A(2:2:end,:)=fliplr(A(2:2:end,:))
%Or if you want to do it with a for loop
A = [1 2 3; 4 5 6; 7 8 9]
n=size(A,1)
B=A;
for i = 1:n
if rem(i,2)== 0
B(i,:) = fliplr(A(i,:))
end
end
0 Comments
More Answers (2)
Jos (10584)
on 25 Apr 2014
n = size(A,1)
...
B(i,:) = x
...
1 Comment
Jos (10584)
on 25 Apr 2014
or using indexing alone
B = A ; % keep the original
B(2:2:end,:) = B(2:2:end,end:-1:1)
Geoff Hayes
on 25 Apr 2014
Hi Chris,
I'm guessing that n should be 3 in this example, and that in the code D is set (at some point) with A.
So the problem is with your assignment, B(i)=x. You are assigning a single element of B to a row vector of three elements. This may be fine if B were defined to be a cell array (and you had written B{i}), but since you want it to be a matrix, then your assignment should mimic how you got x but in the opposite "direction".
Note that the assignment for x is x = D(i,:) or x = fliplr(D(i,:)). In either case you extract all columns (using the :) from the ith row of D. So when you assign this vector to B it should be the "same" - set all columns (using the :) of the ith row of B to x:
B(i,:) = x;
Note that to avoid the B is growing at each iteration warning, you could just initialize B at the beginning to:
B = zeros(size(D));
Hope that this helps!
Geoff
0 Comments
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!