2008年6月18日星期三

如何将曲线以不连续的形式画出来

最近有些“忙”, blog也没有什么内容好更新。弄点简单的东西,凑个篇幅。
MATLAB中的数据,用plot画出来一般是一条连续的曲线,怎么用将它画成离散的形式呢?
例如下面的连续正弦曲线,怎么画成后面的离散形式呢?

这个方法很简单,这个上图中的连续曲线:
x = 1:100;
y = sin(x/20);
figure, plot(x,y);
不连续曲线:
y1 = y(1:2:100);
y2 = y(2:2:100);
x1 = x(1:2:100);
x2 = x(2:2:100);
figure, plot([x1;x2], [y1;y2]);
简单点来说,就是将每段曲线的起点和终点的横纵坐标分别放在一个2×N的数组中。
在这个不连续曲线中,每个线段都是一个绘图对象,所以具有不同的颜色。这种方法的限制是每条连续线段必须包含相同的数据点数。否则的话,只能通过循环来逐段绘制。
实际上,如果数据中有NaN(即:Not a Number),该点是不会绘出来的,这样也可以形成不连续效果。
仍然是上面的曲线:
yn = y;
yn(3:3:100) = NaN;
figure, plot(x, yn)
得到下图。这种方法就没有了各段尺度相同的限制。简单点来说,就是在需要断开的数据点(包括横纵坐标)前面插入NaN。这样的不连续线仍然是作为一个整体的。