• 2008-06-18

    如何将曲线以不连续的形式画出来 - [MATLAB]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://liuxqsmile.blogbus.com/logs/23179959.html

    最近有些“忙”, 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。这样的不连续线仍然是作为一个整体的。

    收藏到:Del.icio.us