How to create an array using for loop?
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Im trying to create an array B where the values are natural logs of A if greater than 1. If value is less or equal to 1 then I want 39 to be added to these values.
A=[8 14 3;-13 1 42;-39 -8 15];
B=zeros(size(A));
for k=1:size(A,1);
l=1:size(A,2);
if (A(k,l))>1
B(k,l)=log(A(k,l));
else
B(k,l)=A(k,l)+39 ;
end;
end;
I'm not sure where I'm going wrong. Can you please help me? Thanks
2 comentarios
Respuestas (2)
Walter Roberson
el 7 de Nov. de 2012
You have
l=1:size(A,2);
so in the line
if (A(k,l))>1
you are doing a vector test, equivalent to
if A(k,:)>1
which is equivalent to
if A(k,[1 2 3])>1
When you test a vector in an "if" statement, the result is considered true only if all of the sub-results are considered true, just as if all() had been wrapped around the test, like
if all(A(k,:) > 1)
as some of your A entries do not satisfy that condition, the test is false and the else portion is executed.
2 comentarios
Image Analyst
el 8 de Nov. de 2012
Instead of
l=1:size(A,2);
you'd have a for loop over l (bad variable name by the way):
for l = 1 : size(A, 2)
Andrei Bobrov
el 7 de Nov. de 2012
l = A > 1;
B = A;
B(l) = log(B(l));
B(~l) = B(~l) + 39;
1 comentario
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!