if statement not working
1 回表示 (過去 30 日間)
古いコメントを表示
Hi, my following piece of code does not work as it expected to and I don't know how to fix it yet. Any suggestions? Thanks!
A = [5;5;5;3;3;2];
B = [10;4;10;10;4;4];
if A == 5
plot(A,B,'rx')
elseif A == 3
hold on
plot(A,B,'bx')
else
hold on
plot(A,B,'gx')
end
2 件のコメント
Stephen23
2019 年 4 月 5 日
"if statement not working"
Did you read the IF documentation (to know how it works with non-scalar conditions), before deciding that it is "not working" ?
採用された回答
Rik
2019 年 4 月 5 日
編集済み: Rik
2019 年 4 月 5 日
What you probably think should happen is in the code below, however, there is a better way.
A = [5;5;5;3;3;2];
B = [10;4;10;10;4;4];
figure(1)
clf(1),axes;
for n=1:numel(A)
if A(n) == 5
plot(A(n),B(n),'rx')
elseif A(n) == 3
hold on
plot(A(n),B(n),'bx')
else
hold on
plot(A(n),B(n),'gx')
end
end
axis([1 6 3 11])
The better way is to use logical indexing:
A = [5;5;5;3;3;2];
B = [10;4;10;10;4;4];
figure(1),clf(1)
already_plotted=false(size(A));
L= A == 5;
plot(A(L),B(L),'rx')
already_plotted(L)=true;
hold on
L= A == 3 & ~already_plotted;
plot(A(L),B(L),'bx')
already_plotted(L)=true;
L= ~already_plotted;
plot(A(L),B(L),'gx')
axis([1 6 3 11])
axis([1 6 3 11])
3 件のコメント
Rik
2019 年 4 月 5 日
See my edited answer. You will only see 5 points, because two of them overlap (5,10).
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Graphics Performance についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!