登录论坛

查看完整版本 : [MATLAB基础] [求助]用plot画图的一个问题


blau
2009-07-03, 10:11
用plot画一个图

程序简化如下:

x = [1 2 3 4 5];
y = [ 0 1 0 2 0 0;
0 1 0 2 0 3;
0 1 0 2 0 3;
0 0 0 2 0 3;
0 0 0 2 0 3;];

plot(x,y,'lineWidth',3)

问题来了,总共生成了4条线.如何才可以不要在图里显示为0的值。
也就是说,只要横线部分,斜线部分不要。还有为0的那根线也不显示。

想了很久,真是焦头烂额。希望有高人指点一下!
多谢了

messenger
2009-07-03, 14:40
可以将不想画斜线的地方改为NaN

x = [1 2 3 4 5];
y = [ 0 1 0 2 0 NaN;
0 1 0 2 0 3;
0 1 0 2 0 3;
0 NaN 0 2 0 3;
0 NaN 0 2 0 3];

plot(x,y,'lineWidth',3)

blau
2009-07-03, 21:14
多谢ls的回复

由于真实的数据量很大,而且y里的数据是处理原始数据得出来的。也不好手动的把0改为NaN。
自己写了段程序:

[c,r] = size(y);
for m = 1:c
for n = 1:r
if y(m,n) == 0
y(m,n) = NaN;
end
end
end

不知道为什么改不了,还请指教!

TTT_IOU
2009-07-04, 09:49
你的上面是可以的,试试这个:
y(~logical(y))=nan;

slgu
2009-07-04, 10:45
y(y==0)=nan 可能更为简单。