Matrix from a for FOR loop with IF conditioning
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Agent Cooper
il 25 Apr 2014
Commentato: Jos (10584)
il 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 Commenti
Risposta accettata
Azzi Abdelmalek
il 25 Apr 2014
Modificato: Azzi Abdelmalek
il 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 Commenti
Più risposte (2)
Jos (10584)
il 25 Apr 2014
n = size(A,1)
...
B(i,:) = x
...
1 Commento
Jos (10584)
il 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
il 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 Commenti
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!