Array in IF then Else statement
이전 댓글 표시
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?
답변 (2개)
the cyclist
2015년 9월 3일
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.)
John D'Errico
2015년 9월 3일
편집: John D'Errico
2015년 9월 3일
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
the cyclist
2015년 9월 3일
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.)
카테고리
도움말 센터 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!