第5章 MATLAB绘图
例5-1 在0≤X≤2?区间内,绘制曲线y=2e-0.5xsin(2πx)。 程序如下:
x=0:pi/100:2*pi;
y=2*exp(-0.5*x).*sin(2*pi*x); plot(x,y)
例5-2 绘制曲线。 t=-pi:pi/100:pi; x=t.*cos(3*t);
y=t.*sin(t).*sin(t); plot(x,y)
例5-3 用不同线型和颜色在同一坐标内绘制曲线y=2e-0.5xsin(2πx)及其包络线。 x=(0:pi/100:2*pi)';
y1=2*exp(-0.5*x)*[1,-1];
y2=2*exp(-0.5*x).*sin(2*pi*x); x1=(0:12)/2;
y3=2*exp(-0.5*x1).*sin(2*pi*x1);
plot(x,y1,'k:',x,y2,'b--',x1,y3,'rp')
例5-4 用不同标度在同一坐标内绘制曲线y=e-0.5xsin(2πx)及曲线y=sin x。 x=0:pi/100:2*pi;
y1=exp(-0.5*x).*sin(2*pi*x); y2=sin(x);
plotyy(x,y1,x,y2)
例5-5 绘制分段函数曲线并添加图形标注。
x=linspace(0,10,100); %产生自变量向量x y=[]; %y的初始值为空 for x0=x if x0>=8
y=[y,1]; %将函数值追加到向量y 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') %加X轴说明 ylabel('Variable Y') %加Y轴说明
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')
例5-6 用图形保持功能在同一坐标内绘制曲线y=2e-0.5xsin(2πx)及其包络线。 x=(0:pi/100:2*pi)';
y1=2*exp(-0.5*x)*[1,-1];
y2=2*exp(-0.5*x).*sin(2*pi*x);
plot(x,y1,'b:') %绘制两根包络线 axis([0,2*pi,-2,2]) %设置坐标 hold on %设置图形保持状态
plot(x,y2,'k') %绘制曲线 legend('包络线','包络线','曲线y') %加图例 hold off %关闭图形保持 grid %网格线控制
例5-7 在一个图形窗口中以子图形式同时绘制正弦、余弦、正切、余切曲线。 程序如下:
x=linspace(0,2*pi,60); y=sin(x); z=cos(x);
t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps); subplot(2,2,1) %选择2×2个区中的1号区 plot(x,y)
title('sin(x)');axis([0,2*pi,-1,1]) subplot(2,2,2) %选择2×2个区中的2号区 plot(x,z)
title('cos(x)');axis([0,2*pi,-1,1]) subplot(2,2,3) %选择2×2个区中的3号区 plot(x,t)
title('tangent(x)');axis([0,2*pi,-40,40]) subplot(2,2,4) %选择2×2个区中的4号区 plot(x,ct)
title('cotangent(x)');axis([0,2*pi,-40,40]) 实际上,还可以作更灵活的分割。请看下面的程序。 x=linspace(0,2*pi,60); y=sin(x);
2
z=cos(x);
t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps);
subplot(2,2,1) %选择2×2个区中的1号区 plot(x,y-1)
title('sin(x)-1');axis ([0,2*pi,-2,0]) subplot(2,1,2) %选择2×1个区中的2号区 plot(x,z-1)
title('cos(x)-1');axis ([0,2*pi,-2,0]) subplot(4,4,3) %选择4×4个区中的3号区 plot(x,y)
title('sin(x)');axis ([0,2*pi,-1,1])
subplot(4,4,4) %选择4×4个区中的4号区 plot(x,z)
title('cos(x)');axis ([0,2*pi,-1,1])
subplot(4,4,7) %选择4×4个区中的7号区 plot(x,t)
title('tangent(x)');axis ([0,2*pi,-40,40]) subplot(4,4,8) %选择4×4个区中的8号区 plot(x,ct)
title('cotangent(x)');axis ([0,2*pi,-40,40])
例5-8 用fplot函数绘制f(x)=cos(tan(?x))的曲线。 命令如下:
>> fplot(@(x)cos(tan(pi*x)),[0,1])
例5-9 绘制y=10x2的对数坐标图并与直角线性坐标图进行比较。 程序如下: 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) %x半对数坐标曲线 title('semilogx(x,y)');grid on
subplot(2,2,3);semilogy(x,y) %y半对数坐标曲线 title('semilogy(x,y)');grid on
subplot(2,2,4);loglog(x,y) %全对数坐标曲线 title('loglog(x,y)');grid on
例5-10 蝴蝶曲线是一种富有美感的平面曲线。
3
① 绘制蝴蝶曲线。
② 调整θ的大小可以改变曲线形状及其方向,将θ减π/2,使图形旋转90o,绘制蝴蝶曲线。
程序如下:
t=0:pi/50:20*pi;
r1=exp(cos(t))-2*cos(4*t)+sin(t/12).^5;
r2=exp(cos(t-pi/2))-2*cos(4*(t-pi/2))+sin((t-pi/2)/12).^5; subplot(1,2,1)
polar(t,r1) %绘制蝴蝶曲线 subplot(1,2,2)
polar(t,r2) %旋转90度的蝴蝶曲线
例5-11 条形图应用示例。 程序如下: x=-1:1;
y=[1,2,3,4,5;1,2,1,2,1;5,4,3,2,1]; subplot(2,2,1);bar(x,y,'grouped') title('Group');axis([-3,3,0,6]) subplot(2,2,2);barh(x,y,'stacked') title('Stack')
例5-12 绘制服从高斯分布的直方图,再将这些数据分到指定范围的区间中,并绘制直方图中。
程序如下:
y=randn(500,1);
subplot(2,2,1)
hist(y);title('高斯分布直方图') x=-4:0.1:4; subplot(2,2,2)
hist(y,x);title('指定范围的高斯分布直方图')
例5-13 绘制例5-12中高斯分布数据在极坐标下的直方图。 y=randn(500,1); theta=y*pi; rose(theta)
title('在极坐标下的直方图')
4
例5-14 某次考试优秀、良好、中等、及格、不及格的人数分别为:7、17、23、19、5,试用扇形统计图作成绩统计分析。
程序如下:
pie([7,17,23,19,5],[0,0,0,0,1]) %对应第5分量部分从饼图中心分离 title('饼图')
legend('优秀','良好','中等','及格','不及格')
例5-15 绘制一个红色的正八边形。 程序如下:
t=0:2*pi/8:2*pi; %取正八边形坐标点
t=[t,t(1)]; %数据向量的首尾重合,使图形封闭。 x=sin(t); y=cos(t);
fill(x,y,'r') %x、y是圆周坐标,数据间隔足够小时可以画圆 axis equal;axis([-1.5,1.5,-1.5,1.5])
例5-16 分别以散点图、阶梯图和杆图形式绘制曲线y=2e-0.5x。 程序如下: x=0:0.35:7; y=2*exp(-0.5*x);
subplot(2,3,1);scatter(x,y,'g')
title('scatter(x,y,''g'')');axis([0,7,0,2]) subplot(2,3,2);stairs(x,y,'b')
title('stairs(x,y,''b'')');axis([0,7,0,2]) subplot(2,3,3);stem(x,y,'k')
title('stem(x,y,''k'')');axis([0,7,0,2])
例5-17 分别以罗盘图、羽毛图和箭头图形式绘制绘制正弦曲线。 程序如下: x=-pi:pi/8:pi; y=sin(x);
subplot(2,2,1);compass(x,y) title('罗盘图')
subplot(2,2,2);feather(x,y)
5