How to create an array using for loop?

3 visualizaciones (últimos 30 días)
Patrick
Patrick el 6 de Nov. de 2012
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
per isakson
per isakson el 6 de Nov. de 2012
Why do you think it goes wrong?
Patrick
Patrick el 7 de Nov. de 2012
Because the values should be the log of and all I get is just the sum of values A + 39.

Iniciar sesión para comentar.

Respuestas (2)

Walter Roberson
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
Patrick
Patrick el 8 de Nov. de 2012
Sounds reasonable but how do I put >1 to make it actually work then?
Image Analyst
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)

Iniciar sesión para comentar.


Andrei Bobrov
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
Jan
Jan el 7 de Nov. de 2012
Editada: Jan el 7 de Nov. de 2012
Just to avoid confusions: The index is an lowercase "L", not a "1" (one).

Iniciar sesión para comentar.

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!

Translated by