第5章_MATLAB绘图
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章 MATLAB 绘图
参考教材 : MATLAB程序设计与应用(第二版) 刘卫国 主编 高等教育出版社
计算机学院 郭江鸿 21B434 82519604
5.1 二维图形 5.1.1 绘制二维曲线 1. plot函数的基本调用格式为: plot(x , y) 其中x和y为长度相同的向量,分别用于 存储二维曲线的x坐标和y坐标数据。
90 0.5 120 0.4 60
0.3 150 0.2 30
0.1
180
0
210
330
240 270
300
3.对数坐标图形 MATLAB提供了绘制对数和半对数坐标曲线 的函数,调用格式为: semilogx(x1,y1,选项1,x2,y2,选项2,…) semilogy(x1,y1,选项1,x2,y2,选项2,…) loglog(x1,y1,选项1,x2,y2,选项2,…) 例5.10 绘制y=10x2的对数坐标图并与直角线性 坐标图进行比较。
Line in 3-D Space
5
Z
0
origin
-5 -5 -5 0 5 5 X Y 0
0.8 0.6 0.4
t=0:0.15:2*pi; x=sin(t); y=cos(t); z=cos(2*t); plot3(x,y,z,'b-',x,y,z, 'rd')
axis([0 10 0 2.5]) %设置坐标轴刻度范围
例5.5 绘制分段函数曲线并添加图形标注。
x=linspace(0,10,100); y=[ ]; for x0=x if x0>=8 y = [y,1]; elseif x0>=6 y = [y,5-x0/2]; elseif x0>=4 y = [y , 2]; elseif x0>=0 y = [y,sqrt(x0)]; end end plot(x,y) axis([0 10 0 2.5]) title('分段函数曲线'); xlabel('Variable X'); ylabel('Variable Y');
2 1.5 1 0.5 0 -0.5 -1 -1.5 -2 -4
-3
-2
-1
0
1
2
3
4
练习1: 设 在0~2π 区间取101点,绘制函数曲线。
2. 同一图中绘多条曲线 plot(x1,y1,option1,x2,y2,option2,…) 选项参数option
颜色: b blue g green r red c cyan m magenta y yellow k black . point
x=linspace(0,2*pi,360); y=sin(x); z=cos(x); t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps); subplot(2,2,1); plot(x,y) ; title('sin(x)') ; axis ([0,2*pi,-1,1]); subplot(2,2,2); plot(x,z); title('cos(x)'); axis ([0,2*pi,-1,1]); subplot(2,2,3); plot(x,t); title('tangent(x)'); axis ([0,2*pi,-40,40]); subplot(2,2,4); plot(x,ct); title('cotangent(x)'); axis ([0,2*pi,-40,40]);
text(2,1.3,'y=x^{1/2}'); text(4.5,1.9,'y=2'); text(7.3,1.5,'y=5-x/2'); text(8.5,0.9,'y=1'); grid
思考:有没有更简便的求y的方法?利用矩阵运算
for x0=x if x0>=8 y = [y,1]; elseif x0>=6 y = [y,5-x0/2]; elseif x0>=4 y = [y , 2]; elseif x0>=0 y = [y,sqrt(x0)]; end end
plot(x,y) 1000 1000
semilogx(x,y)
800
800
600
600
400
400
200
200
0
0
2
4
6
8
10
0 -1 10
10
0
10
1
10
3
semilogy(x,y)
10
3
loglog(x,y)
10
2
10
2
10
1
10
1
10
0
10
0
10
-1
0
2
4
6
8
10
10
-1
10
-1
10
0
10
-. Dashdot
-- dashed
例5.3 用不同线型和颜色在同 一坐标内绘制曲线及其包络 线。
2 1.5 1 0.5 0 -0.5 -1 -1.5
x = (0 : pi/100 : 2*pi ); y1 = 2 * exp(-0.5*x) ; y2=2*exp(-0.5*x) .* sin(2*pi*x); y3= -2 * exp(-0.5*x) ; plot(x,y1, 'g:',x,y2,'b-',x,y3,'r--');
x=0:0.1:10; y=10*x.*x; subplot(2,2,1);plot(x,y); title('plot(x,y)');grid on; subplot(2,2,2);semilogx(x,y); title('semilogx(x,y)'); grid on; subplot(2,2,3);semilogy(x,y); title('semilogy(x,y)'); grid on; subplot(2,2,4);loglog(x,y); title('loglog(x,y)');grid on;
2.极坐标图 polar函数用来绘制极坐标图,其调用格式为: polar(theta,rho,选项) 其中theta为极坐标极角,rho为极坐标矢径, 选项的内容与plot函数相似。 例5.9 绘制ρ=sin(2θ)cos(2θ)的极坐标图。 程序如下: theta=0:0.01:2*pi; rho=sin(2*theta).*cos(2*theta); polar(theta,rho, 'r');
例5.1 在0≤x≤2区间内,绘制曲线 y=2e-0.5xcos(2πx)
2 1.5
程序如下: x=0:pi/100:2*pi; y=2*exp(-0.5*x).*cos(2*pi*x); plot(x,y)
1 0.5 0 -0.5 -1 -1.5 -2
0
1
2
3
4
5
6
7
例5.2 绘制曲线。 程序如下: t=-pi : pi/100 : pi; x=t.*cos(3*t); y=t.*sin(t).*sin(t); plot(x,y);
1 0
2
0
x标度一致,y标度不同, 左边为y1标度,右边为y2标度。 -10
1
2
3
45678 Nhomakorabea9
-2 10
4. 复数的绘图
plot(z):z为复数时,将z的实部作为X坐标,虚部作 为Y坐标进行绘图。 相当于plot(real(z),imag(z)) 下面程序可以绘制一个单位圆: t=0 :0.01 : 2*pi; z=exp(i*t) %z=cos(t)+i*sin(t) plot(z)
1
5.2 三维图形
5.2.1 绘制三维空间中的曲线函数:plot3
t=0:pi/50:2*pi; x=8*cos(t); y=4*sqrt(2)*sin(t); z=-4*sqrt(2)*sin(t); plot3(x,y,z,'p'); title('Line in 3-D Space');
text(0,0,0,'origin'); xlabel('X'), ylabel('Y'), zlabel('Z'); axis equal grid;
y=sqrt(x).*(x>=0&x<4)... +2.*(x>=4&x<6)... +(5-x/2).*(x>=6&x<8)... +1.*(x>=8)
练习3:
已知
在-5≤x≤5区间绘制函数曲线。
3、图形保持:hold on/off 可继续添加新的图形。 例5.6 采用图形保持,在同一坐标内绘制曲线 y1=2e-0.5xsin(4πx) 和y2=2e-0.5xsin(πx)及其包络线。 x=(0:pi/100:2*pi)'; y1=2*exp(-0.5*x).*sin(4*pi*x); y2=2*exp(-0.5*x).*sin(pi*x); y3=2*exp(-0.5*x)*[1,-1]; plot(x,y1,'b',x,y2,'r'); axis([0,2*pi,-2,2]); %设置坐标 hold on; %设置图形保持状态 plot(x,y3,'g'); legend('曲线1','曲线2','包络线'); %加图例 hold off; %关闭图形保持 grid %网格线控制
例5.8 分别以条形图、填充图、阶梯图和杆图 形式绘制曲线y=2e-0.5x。
x=0:0.35:7; y=2*exp(-0.5*x); subplot(2,2,1) ; bar(x,y,'g'); title('bar(x,y,''g'')') ; axis([0,7,0,2]); subplot(2,2,2); fill(x,y,'r'); title('fill(x,y,''r'')'); axis([0,7,0,2]); subplot(2,2,3); stairs(x,y,'b'); title('stairs(x,y,''b'')'); axis([0,7,0,2]); subplot(2,2,4); stem(x,y,'k'); title('stem(x,y,''k'')');axis([0,7,0,2]);
0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8
-1
-0.5
0
0.5
1
5.1.2 绘制图形的辅助操作 1. 图形标注 title('分段函数曲线'); %加图形标题 title (图形名称) xlabel('Variable X'); xlabel (x轴说明) %加X轴说明 ylabel('Variable Y'); ylabel (y轴说明) %加X轴说明 text (x,y,图形说明) text(4.5,1.9,'y=2'); legend (图例1,图例2,…) %在坐标(x,y)处加图形说明 legend('包络线', '曲线y'); 2.坐标控制 %为各图形加图例 axis([xmin xmax ymin ymax zmin zmax])
练习4: 以子图形式绘制练习2中的三条曲线
5.1.3 绘制二维图形的其他函数 1. 其他形式的线性直角坐标图 条形图、阶梯图、杆图和填充图等,所采用的 函数分别是: bar(x , y , 选项) stairs(x , y, 选项) stem(x , y , 选项) fill(x1,y1,选项1,x2,y2,选项2,…)
如: ‘b*:’,’*b:’各参 数任意组合,顺序任意。 没有给出颜色依次取各种颜 色。
>>help plot
线型:
o + s circle plus square - Solid : dotted
数据点标记符号: x x-mark * Star d diamon p pentagram h hexagram
4 . 图形窗口的分割: subplot函数 调用格式为:subplot(m,n,p) 该函数将当前图形窗口分成m×n个绘图 区,即m行,n列,且选定第p个区为当前活动 区。在每一个绘图区允许以不同的坐标系单独 绘制图形。
例5.7 在一个图形窗口中以子图形式同时绘制 正弦、余弦、正切、余切曲线。 程序如下:
-2 0 1 2
3
4
5
6
7
练习2:
已知 y1=x2,y2=cos(2x),y3=y1×y2, 在同一坐标系下用不同的颜色和线型绘制三条曲线。
3.双纵坐标函数plotyy
将不同量纲或不同数量级的函数画在同一坐标中。 例5.4 用不同标度在同一坐标内绘制曲线 y1=e-0.5xsin(2πx)及曲线y2=1.5e-0.1xsin(x)。 x1=0 : pi/100 : 2*pi; x2=0 : pi/100 : 3*pi; y1=exp(-0.5*x1).*sin(2*pi*x1); y2=1.5*exp(-0.1*x2).*sin(x2); plotyy(x1,y1,x2,y2);
参考教材 : MATLAB程序设计与应用(第二版) 刘卫国 主编 高等教育出版社
计算机学院 郭江鸿 21B434 82519604
5.1 二维图形 5.1.1 绘制二维曲线 1. plot函数的基本调用格式为: plot(x , y) 其中x和y为长度相同的向量,分别用于 存储二维曲线的x坐标和y坐标数据。
90 0.5 120 0.4 60
0.3 150 0.2 30
0.1
180
0
210
330
240 270
300
3.对数坐标图形 MATLAB提供了绘制对数和半对数坐标曲线 的函数,调用格式为: semilogx(x1,y1,选项1,x2,y2,选项2,…) semilogy(x1,y1,选项1,x2,y2,选项2,…) loglog(x1,y1,选项1,x2,y2,选项2,…) 例5.10 绘制y=10x2的对数坐标图并与直角线性 坐标图进行比较。
Line in 3-D Space
5
Z
0
origin
-5 -5 -5 0 5 5 X Y 0
0.8 0.6 0.4
t=0:0.15:2*pi; x=sin(t); y=cos(t); z=cos(2*t); plot3(x,y,z,'b-',x,y,z, 'rd')
axis([0 10 0 2.5]) %设置坐标轴刻度范围
例5.5 绘制分段函数曲线并添加图形标注。
x=linspace(0,10,100); y=[ ]; for x0=x if x0>=8 y = [y,1]; elseif x0>=6 y = [y,5-x0/2]; elseif x0>=4 y = [y , 2]; elseif x0>=0 y = [y,sqrt(x0)]; end end plot(x,y) axis([0 10 0 2.5]) title('分段函数曲线'); xlabel('Variable X'); ylabel('Variable Y');
2 1.5 1 0.5 0 -0.5 -1 -1.5 -2 -4
-3
-2
-1
0
1
2
3
4
练习1: 设 在0~2π 区间取101点,绘制函数曲线。
2. 同一图中绘多条曲线 plot(x1,y1,option1,x2,y2,option2,…) 选项参数option
颜色: b blue g green r red c cyan m magenta y yellow k black . point
x=linspace(0,2*pi,360); y=sin(x); z=cos(x); t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps); subplot(2,2,1); plot(x,y) ; title('sin(x)') ; axis ([0,2*pi,-1,1]); subplot(2,2,2); plot(x,z); title('cos(x)'); axis ([0,2*pi,-1,1]); subplot(2,2,3); plot(x,t); title('tangent(x)'); axis ([0,2*pi,-40,40]); subplot(2,2,4); plot(x,ct); title('cotangent(x)'); axis ([0,2*pi,-40,40]);
text(2,1.3,'y=x^{1/2}'); text(4.5,1.9,'y=2'); text(7.3,1.5,'y=5-x/2'); text(8.5,0.9,'y=1'); grid
思考:有没有更简便的求y的方法?利用矩阵运算
for x0=x if x0>=8 y = [y,1]; elseif x0>=6 y = [y,5-x0/2]; elseif x0>=4 y = [y , 2]; elseif x0>=0 y = [y,sqrt(x0)]; end end
plot(x,y) 1000 1000
semilogx(x,y)
800
800
600
600
400
400
200
200
0
0
2
4
6
8
10
0 -1 10
10
0
10
1
10
3
semilogy(x,y)
10
3
loglog(x,y)
10
2
10
2
10
1
10
1
10
0
10
0
10
-1
0
2
4
6
8
10
10
-1
10
-1
10
0
10
-. Dashdot
-- dashed
例5.3 用不同线型和颜色在同 一坐标内绘制曲线及其包络 线。
2 1.5 1 0.5 0 -0.5 -1 -1.5
x = (0 : pi/100 : 2*pi ); y1 = 2 * exp(-0.5*x) ; y2=2*exp(-0.5*x) .* sin(2*pi*x); y3= -2 * exp(-0.5*x) ; plot(x,y1, 'g:',x,y2,'b-',x,y3,'r--');
x=0:0.1:10; y=10*x.*x; subplot(2,2,1);plot(x,y); title('plot(x,y)');grid on; subplot(2,2,2);semilogx(x,y); title('semilogx(x,y)'); grid on; subplot(2,2,3);semilogy(x,y); title('semilogy(x,y)'); grid on; subplot(2,2,4);loglog(x,y); title('loglog(x,y)');grid on;
2.极坐标图 polar函数用来绘制极坐标图,其调用格式为: polar(theta,rho,选项) 其中theta为极坐标极角,rho为极坐标矢径, 选项的内容与plot函数相似。 例5.9 绘制ρ=sin(2θ)cos(2θ)的极坐标图。 程序如下: theta=0:0.01:2*pi; rho=sin(2*theta).*cos(2*theta); polar(theta,rho, 'r');
例5.1 在0≤x≤2区间内,绘制曲线 y=2e-0.5xcos(2πx)
2 1.5
程序如下: x=0:pi/100:2*pi; y=2*exp(-0.5*x).*cos(2*pi*x); plot(x,y)
1 0.5 0 -0.5 -1 -1.5 -2
0
1
2
3
4
5
6
7
例5.2 绘制曲线。 程序如下: t=-pi : pi/100 : pi; x=t.*cos(3*t); y=t.*sin(t).*sin(t); plot(x,y);
1 0
2
0
x标度一致,y标度不同, 左边为y1标度,右边为y2标度。 -10
1
2
3
45678 Nhomakorabea9
-2 10
4. 复数的绘图
plot(z):z为复数时,将z的实部作为X坐标,虚部作 为Y坐标进行绘图。 相当于plot(real(z),imag(z)) 下面程序可以绘制一个单位圆: t=0 :0.01 : 2*pi; z=exp(i*t) %z=cos(t)+i*sin(t) plot(z)
1
5.2 三维图形
5.2.1 绘制三维空间中的曲线函数:plot3
t=0:pi/50:2*pi; x=8*cos(t); y=4*sqrt(2)*sin(t); z=-4*sqrt(2)*sin(t); plot3(x,y,z,'p'); title('Line in 3-D Space');
text(0,0,0,'origin'); xlabel('X'), ylabel('Y'), zlabel('Z'); axis equal grid;
y=sqrt(x).*(x>=0&x<4)... +2.*(x>=4&x<6)... +(5-x/2).*(x>=6&x<8)... +1.*(x>=8)
练习3:
已知
在-5≤x≤5区间绘制函数曲线。
3、图形保持:hold on/off 可继续添加新的图形。 例5.6 采用图形保持,在同一坐标内绘制曲线 y1=2e-0.5xsin(4πx) 和y2=2e-0.5xsin(πx)及其包络线。 x=(0:pi/100:2*pi)'; y1=2*exp(-0.5*x).*sin(4*pi*x); y2=2*exp(-0.5*x).*sin(pi*x); y3=2*exp(-0.5*x)*[1,-1]; plot(x,y1,'b',x,y2,'r'); axis([0,2*pi,-2,2]); %设置坐标 hold on; %设置图形保持状态 plot(x,y3,'g'); legend('曲线1','曲线2','包络线'); %加图例 hold off; %关闭图形保持 grid %网格线控制
例5.8 分别以条形图、填充图、阶梯图和杆图 形式绘制曲线y=2e-0.5x。
x=0:0.35:7; y=2*exp(-0.5*x); subplot(2,2,1) ; bar(x,y,'g'); title('bar(x,y,''g'')') ; axis([0,7,0,2]); subplot(2,2,2); fill(x,y,'r'); title('fill(x,y,''r'')'); axis([0,7,0,2]); subplot(2,2,3); stairs(x,y,'b'); title('stairs(x,y,''b'')'); axis([0,7,0,2]); subplot(2,2,4); stem(x,y,'k'); title('stem(x,y,''k'')');axis([0,7,0,2]);
0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8
-1
-0.5
0
0.5
1
5.1.2 绘制图形的辅助操作 1. 图形标注 title('分段函数曲线'); %加图形标题 title (图形名称) xlabel('Variable X'); xlabel (x轴说明) %加X轴说明 ylabel('Variable Y'); ylabel (y轴说明) %加X轴说明 text (x,y,图形说明) text(4.5,1.9,'y=2'); legend (图例1,图例2,…) %在坐标(x,y)处加图形说明 legend('包络线', '曲线y'); 2.坐标控制 %为各图形加图例 axis([xmin xmax ymin ymax zmin zmax])
练习4: 以子图形式绘制练习2中的三条曲线
5.1.3 绘制二维图形的其他函数 1. 其他形式的线性直角坐标图 条形图、阶梯图、杆图和填充图等,所采用的 函数分别是: bar(x , y , 选项) stairs(x , y, 选项) stem(x , y , 选项) fill(x1,y1,选项1,x2,y2,选项2,…)
如: ‘b*:’,’*b:’各参 数任意组合,顺序任意。 没有给出颜色依次取各种颜 色。
>>help plot
线型:
o + s circle plus square - Solid : dotted
数据点标记符号: x x-mark * Star d diamon p pentagram h hexagram
4 . 图形窗口的分割: subplot函数 调用格式为:subplot(m,n,p) 该函数将当前图形窗口分成m×n个绘图 区,即m行,n列,且选定第p个区为当前活动 区。在每一个绘图区允许以不同的坐标系单独 绘制图形。
例5.7 在一个图形窗口中以子图形式同时绘制 正弦、余弦、正切、余切曲线。 程序如下:
-2 0 1 2
3
4
5
6
7
练习2:
已知 y1=x2,y2=cos(2x),y3=y1×y2, 在同一坐标系下用不同的颜色和线型绘制三条曲线。
3.双纵坐标函数plotyy
将不同量纲或不同数量级的函数画在同一坐标中。 例5.4 用不同标度在同一坐标内绘制曲线 y1=e-0.5xsin(2πx)及曲线y2=1.5e-0.1xsin(x)。 x1=0 : pi/100 : 2*pi; x2=0 : pi/100 : 3*pi; y1=exp(-0.5*x1).*sin(2*pi*x1); y2=1.5*exp(-0.1*x2).*sin(x2); plotyy(x1,y1,x2,y2);