MATLAB绘图用 plot 把两组对应的数据画成曲线。看下面的例子,先准备自变量 x,再算出 y,最后调用 plot:

x = 0:0.1:10;
y = sin(x);
plot(x, y)

运行后会弹出图形窗口,里面是一条正弦曲线,后面加标题、改线型、画多条曲线,都是在这三步上扩展出来的。

准备自变量 x

x 通常是一段等差数列,用冒号或 linspace 生成:

x = 0:0.1:10;          % 从 0 到 10,步长 0.1(点密,曲线平滑)
x = 0:5:100;           % 从 0 到 100,步长 5(点稀,折线明显)
x = linspace(0, 10, 200); % 0 到 10 之间均匀取 200 个点

步长越小,采样点越多,曲线看起来越平滑。可以对比一下:

x1 = -100:20:100;   y1 = x1.^2;  subplot(1,2,1), plot(x1, y1), title('步长 20')
x2 = -100:5:100;    y2 = x2.^2;  subplot(1,2,2), plot(x2, y2), title('步长 5')

左边仍能看出折线感,右边抛物线就顺多了。画图时采样点要给够。

算 y:用点运算

从 x 算 y 时,乘方、乘、除要对每个元素分别算,就要写点运算,否则会按矩阵规则处理:

x = 0:0.01:10;
y1 = x.^2;                 % 抛物线
y2 = sin(x);               % 正弦
y3 = exp(-x) .* sin(2*x+3); % 衰减振荡(注意 .* )

sin(2*x+3) 这样写没问题,但 exp(-x)*sin(2*x+3) 会按矩阵乘法理解两个数组,尺寸对不上就会报错,应写成 .*

plot 的几种写法

plot(x, y)              % 最基本
plot(y)                 % 只有 y:x 自动取 1,2,3...
plot(x, y, 'r--o')      % 指定颜色、线型、标记
plot(x1, y1, x2, y2)    % 同图多条曲线

第三个参数 'r--o' 里,r 是颜色(red),-- 是虚线,o 是圆形标记。颜色、线型、标记的组合在下一篇美化图形里细讲。

多曲线与图例

x = 0:0.01:10;
plot(x, sin(x), x, cos(x), '.-')
legend('Sin(x)', 'Cos(x)')

plot 一次传入两组 x、y,就会画出两条曲线。legend 按顺序给每条曲线加图例文字。

动手练习

  • 画出 y = x^2[-100, 100] 的图形,分别用步长 20 和 5,比较平滑度。
  • 画出 y = exp-x) .* sin(2*x+3)[0, 10] 的图,再用 axis([0 10 -1 1]) 限定坐标范围。
  • 在同一张图里画出 sin 和 cos,并加上 legend。