(作者:lcc)
二维曲线绘图的基本操作
n plot指令的基本调用格式
(1)plot(x)
n x为向量时,以该元素的下标为横坐标、元素值为纵坐标绘出曲线
n x为实数二维数组时,则按列绘制每列元素值相对其下标的曲线,曲线数等于x数组的列数。
n x为复数二维数组时,则按列分别以数组的实部和虚部为横、纵坐标绘制多条曲线
(2)plot(x, y)
n x、y为同维数组时,绘制以x、y元素为横纵坐标的曲线
n x为向量,y为二维数组、且其列数或行数等于x的元素数时,绘制多条不同颜色的曲线
n x为二维数组,y为向量时,情况与上相同,只是y仍为纵坐标。
(3)plot(x1, y1, x2, y2, …)
n 绘制以x1为横坐标、y1为纵坐标的曲线1,以x2为横坐标、y2为纵坐标的曲线2,等等。
n 其中x为横坐标,y为纵坐标,绘制y=f(x)函数曲线。
例3.1使用直角坐标系在[0,2π]区间内,绘制曲线
x = 0:pi/100:2*pi;
y = 2*exp(-0.5*x).*sin(2*pi*x);
plot(x,y)
例3.2 使用参数方程绘制曲线绘制曲线
t = -pi:pi/100:pi;
x = t.*cos(3*t);
y = t.*sin(t).^2;
plot(x,y)
例3.3 绘制复杂曲线
用图形表示连续调制波形及其包络线。
t=(0:pi/100:pi)’; %长度为101的时间采样列向量
y1=sin(t)*[1,-1]; %包络线函数值,是(101x2)的矩阵
y2=sin(t).*sin(9*t); %长度为101的调制波列向量
t3=pi*(0:9)/9;
y3=sin(t3).*sin(9*t3);
plot(t,y1,'r:',t,y2,'b',t3,y3,'bo')
axis([0,pi,-1,1]) %控制轴的范围
多次叠绘、双纵坐标和多子图
n 多次叠绘
n 多次调用plot命令在一幅图上绘制多条曲线,需要hold指令的配合。
n hold on 保持当前坐标轴和图形,并可以接受下一次绘制。
n hold off 取消当前坐标轴和图形保持,这种状态下,调用plot绘制完全新的图形,不保留以前的坐标格式、曲线。
例 3.5 重绘曲线
重绘波形及其包络线。
t=(0:pi/100:pi)'; %长度为101的时间采样列向量
y1=sin(t)*[1,-1]; %包络线函数值,是(101x2)的矩阵
y2=sin(t).*sin(9*t); %长度为101的调制波列向量
t3=pi*(0:9)/9;
y3=sin(t3).*sin(9*t3);
plot(t,y1,'r:’)
hold on
plot(t,y2,'b‘)
plot(t3,y3,'bo')
axis([0,pi,-1,1]) %控制轴的范围
hold off
例3.6 利用hold绘制离散信号的波形。
t=2*pi*(0:20)/20;
y=cos(t).*exp(-0.4*t);
stem(t,y,'g');
hold on;
stairs(t,y,'r');
hold off
双纵坐标:plotyy指令
n plotyy指令调用格式:
plotyy(x1, y1, x2, y2)
x1-y1曲线y轴在左, x2-y2曲线y轴在右。
例3.7:
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
plotyy(x,y1,x,y2);
多子图
n MATLAB允许在同一图形窗口布置几幅独立的子图。具体指令:
n subplot(m, n, k)
使(mxn)幅子图中第k个子图成为当前图
n subplot(‘postion’, [left, bottom, width, height])
在指定的位置上开辟子图,并成为当前图
说明:
Ø subplot(m, n, k)的含义:图形窗口包含(mxn)个子图,k为要指定的当前子图的编号。其编号原则: 左上方为第1子图,然后向右向下依次排序。该指令按缺省值分割子图区域。
Ø subplot(‘postion’, [left, bottom, width, height])用于手工指定子图位置,指定位置的四元组采用归一化的标称单位,即认为整个图形窗口绘图区域的高、宽的取值范围都是[0, 1],而左下角为(0,0)坐标。
Ø 产生的子图彼此独立。所有的绘图指令均可以在子图中使用。
例3.8 演示subplot指令对图形窗的分割
t=(pi*(0:1000)/1000)';
y1=sin(t);y2=sin(10*t);y12=sin(t).*sin(10*t);
subplot(2,2,1),plot(t,y1);axis([0,pi,-1,1])
subplot(2,2,2),plot(t,y2);axis([0,pi,-1,1])
subplot('position',[0.2,0.05,0.6,0.45])
plot(t,y12,'b-',t,[y1,-y1],'r:');
绘制图形的辅助操作
曲线线形控制符
符号 |
- |
: |
-. |
-- |
含义 |
实线 |
虚线 |
点划线 |
双划线 |
曲线颜色控制符
符号 |
b |
g |
r |
c |
m |
y |
k |
w |
含义 |
兰 |
绿 |
红 |
青 |
品红 |
黄 |
黑 |
白 |
曲线的色彩、线型和 数据点形
Ø 曲线的线形控制符、颜色控制符、数据点形控制符可以组合使用
Ø 其先后次序不影响绘图结果
Ø 也可以单独使用。
例3.9 绘制图形的辅助操作
Specify Line properties
t=(0:15)*2*pi/15;
y=sin(t);
subplot(3,2,1), plot(t, y); title('Lins style is default')
subplot(3,2,2), plot(t, y, 'o'); title('Lins style is o')
subplot(3,2,3), plot(t, y, 'k:'); title('Lins style is k:')
subplot(3,2,4), plot(t, y, 'k:*'); title('Lins style is k:*')
subplot(3,2,5), plot(t, y, 'm-d'); title('Lins style is m-d')
subplot(3,2,6), plot(t, y, 'r-p'); title('Lins style is r-p')
坐标、刻度和分格线控制
例 3.10 坐标控制
绘制椭圆,长轴为3.25,短轴为1.15
t=0:2*pi/99:2*pi;
x=1.15*cos(t); y=3.25*sin(t); % y为长轴,x为短轴
subplot(2,2,1); plot(x, y);
axis off
title('axis off');
subplot(2,2,2); plot(x,y);
axis image;
title('axis image');
subplot(2,2,3); plot(x,y);
axis equal;
title('axis Equal');
subplot(2,2,4); plot(x,y);
axis square;
title('axis Square');
刻度、分格线和坐标框
n 分格线与grid指令
n grid on 画出分格线
n grid off 不画分格线
n MATLAB的缺省设置是不画分格线;分格线的疏密取决于坐标刻度(改变坐标刻度,可改变分格线的疏密)。
n 坐标框
n box on 控制加边框线
n box off 控制不加边框线
n 刻度设置
n 指令及格式:
set(gca, ‘xtick’, xs, ‘ytick’, ys)
n xs、ys可以使任何合法的实数向量,用于分别设置x、y轴的刻度。
例3.11绘制y=1-exp(-0.3*t).*cos(0.7*t)
t=6*pi*(0:100)/100;
y=1-exp(-0.3*t).*cos(0.7*t);
tt=t(find(abs(y-1)>0.05));
ts=max(tt);
plot(t,y,'r-');
grid on;
axis([0,6*pi,0.6,max(y)]);
title('y=1-exp(-\alpha*t)*cos(\omega*t)');
hold on;
plot(ts,0.95,'bo');
hold off;
set(gca,'xtick',[2*pi,4*pi,6*pi],'ytick',[0.95,1,1.05,max(y)]);
grid on;