本节介绍 MATLAB 中二维曲线绘图的基本流程:先构造自变量采样点,再对数组做逐元素运算得到因变量,最后调用 plot 将数据映射为图形。数值结果以矩阵形式存放时,若对整段向量做函数运算,须使用点运算(如 .*、.^),否则 MATLAB 会按线性代数规则解释乘除,尺寸不匹配时将报错。掌握上述三步后,即可在同一坐标系中绘制多条曲线并添加图例。
准备自变量 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 表示红色,-- 为虚线,o 为圆形标记。颜色、线型与标记的完整组合见下一节图形标注与外观。
多曲线与图例
x = 0:0.01:10;
plot(x, sin(x), x, cos(x), '.-')
legend('Sin(x)', 'Cos(x)')一次向 plot 传入多组 x、y 即可绘制多条曲线。legend 按曲线出现顺序设置图例文字。
练习建议
- 在区间
[-100, 100]上绘制y = x^2,分别使用步长 20 与 5,比较平滑程度。 - 在
[0, 10]上绘制y = exp(-x) .* sin(2*x+3),并用axis([0 10 -1 1])限定坐标范围。 - 在同一图中绘制 sin 与 cos,并添加
legend。
本节说明了自变量采样、点运算求因变量以及 plot 的基本用法与多曲线图例。下一节介绍图形标注与外观:标题、轴标签、网格、axis 及线型与颜色设置。