Array in IF then Else statement
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I want to implement the following statement to my program:
if pinch > 0 then
Dh=h.one-h.two
else Dh=0
end
Howver, pinch = [0:2:10] and matlab only runs it for the first element(0) and not the rest. Any suggestions?
0 comentarios
Respuestas (2)
the cyclist
el 3 de Sept. de 2015
if expression
then the expression has to evaluate to true/false, not a vector of true/false.
There may still be a way to evaluate this in a vectorized manner, though. You have provided quite enough info for us to know what your variables look like, but something like:
D = zeros(size(pinch));
D(pinch>0) = 6;
will work. (You'll need to replace my "6" with an appropriate expression.)
0 comentarios
John D'Errico
el 3 de Sept. de 2015
Editada: John D'Errico
el 3 de Sept. de 2015
This is a common misperception. What many people fail to understand is that if statements are SCALAR operations. They do not work on every element of an array independently. (Perhaps this is a valid behavior in some other language, that may be.)
If your goal is to operate on an array like this, then you would either use a test inside a loop (not my favorite in general) or you must use a vectorized test and assignment, perhaps like this:
Dh = zeros(size(pinch);
Dh(pinch > 0) = h.one - h.two;
1 comentario
the cyclist
el 3 de Sept. de 2015
If h.one and h.two are also vectors, you might need to do
Dh(pinch > 0) = h.one(pinch>0) - h.two(pinch>0)
or whatever it takes to get the properly sized vector. (That is what I meant in my own answer, but did not write out explicitly.)
Ver también
Categorías
Más información sobre Logical 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!