Matlab绘图功能.docx
- 文档编号:5047168
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:31
- 大小:965.68KB
Matlab绘图功能.docx
《Matlab绘图功能.docx》由会员分享,可在线阅读,更多相关《Matlab绘图功能.docx(31页珍藏版)》请在冰豆网上搜索。
Matlab绘图功能
第五章Matlab绘图功能
5.1二维图形的绘制
5.1.1常用的二维图形绘图函数
基本的二维绘图函数有
plot——绘制2维曲线;
title——给图形加标题;
grid——显示网格线;
xlabel——给x轴加标记;
ylabel——给y轴加标记;
text——在坐标图中加入文字注释。
例:
画出函数
,其中
从0到
步进
的曲线图。
X=0:
pi/100:
2*pi;
Y=sin(X);
plot(X,Y);%作图
gridon;%网格线显示,若该为gridoff则不显示网格
ylabel('y=sin2\pix');%Y轴标注,可以有汉字
xlabel('x');%X轴标注,可以有汉字
title('functionploty=sin2\pix');%图标题
text(0.5,sin(0.5),'\leftarrowsin2\pi0.5');%text()可以在指定坐标处写文字标注
text(2.3,sin(2.3),'\leftarrowsin2\pi2.3');%所有标注中均可使用汉字
%对于特殊符号,如希腊字母,箭头等需要采用LaTeX格式
结果如图5.1所示。
图5.1基本的二维绘图函数用法
5.1.2图形的线型和颜色控制
在命令plot的高级用法中,可以设置作图的线型,标记类型,线和标记的颜色,粗细等特征。
用命令docLineSpec和docplot可以查询详细的帮助文档。
线型的定义如下:
-solidline(default)实线
--dashedline虚线
:
dottedline虚点连线
-.dash-dotline点划线
常用标记的定义为:
+plussign十字标记
ocircle小圈标记
*asterisk星号标记
.point黑点标记
xcross叉号标记
ssquare方框标记
ddiamond菱形标记
^upwardpointingtriangle上三角标记
vdownwardpointingtriangle下三角标记
>rightpointingtriangle右三角标记
pfive-pointedstar(pentagram)五角星标记 hsix-pointedstar(hexagram)六角星标记 颜色的定义是: rred红 ggreen绿 bblue蓝 ccyan兰绿色 mmagenta洋红 yyellow黄 kblack黑 wwhite白 另外,利用线型属性和标记属性可以随心所欲地设计作图图式。 LineWidth定义线的宽度,默认为1 MarkerEdgeColor定义标记的边缘颜色 MarkerFaceColor定义标记面的颜色 MarkerSize定义标记记号的大小 举例1: t=0: pi/20: 2*pi; plot(t,sin(t),'-.r*');%用红色点划线和星号作图 holdon;%保持当前图形不被擦除 plot(sin(t-pi/2),'--bp');%用蓝色虚线和五角星标记作图 plot(sin(t-pi),': ks');%用黑色虚点线和方框标记作图 holdoff; 结果如图5.2所示(黑白印刷时颜色表现不出来)。 图5.2二维绘图线型和标记的特征控制 (1) 举例2: t=0: pi/20: 2*pi; plot(t,sin(2*t),'-mo',…%线型: 实线,洋红色,小圆标记 'LineWidth',2,…%线宽为2 'MarkerEdgeColor','k',…%标记边缘颜色: 黑色 'MarkerFaceColor',[.491.63],…%标记面颜色: 淡绿 'MarkerSize',12);%标记大小: 12 结果如图5.3所示。 图5.3二维绘图线型和标记的特征控制 (2) 5.1.3图形的标注 图形的标注可以用text函数。 其用法是: text(x,y,'字符串');text(...'PropertyName',PropertyValue...); 其中,'PropertyName'为字符属性名称,PropertyValue为相应的属性取值。 字符串中若有特殊符号,如希腊字母、箭头等,需要采用LaTeX格式表示。 用doctext_props可以得到详细的用法手册。 对于常用的一些,举例如下: ●改变字符大小。 属性为'FontSize',取值为: 101216… ●改变字符字体。 属性为'FontName',取值为: 'Courier','宋体','黑体'… ●改变字体背景颜色。 属性为'BackgroundColor',取值为: [R,G,B]和'r','b','k','w'(红,蓝,黑,白)等,参见手册docColorSpec。 命令xlabel,ylabel,title等也可用类似方法修改字体属性。 详见帮助文档。 修改上例为: X=0: pi/100: 2*pi; Y=sin(X); plot(X,Y,'--r');%用红色虚线作图 gridon; ylabel('y=sin2\pix','FontSize',14);%Y轴标注,设置了字号 xlabel('x','FontSize',14);%X轴标注,设置了字号 title('functionploty=sin2\pix','FontSize',14);%图标题,设置了字号 text(0.5,sin(0.5),'\leftarrowsin2\pi0.5',...%...为续行号 'FontSize',18,...%字号为18号 'BackgroundColor','w');%背景为白,字符部分将盖住网格线,使字符更清晰 text(2.3,sin(2.3),'\leftarrowsin2\pi2.3','BackgroundColor',[0.80.80.8]); %'BackgroundColor',[0.70.70.7]使得背景为灰色 结果如图5.4所示。 图5.4修改作图字体属性,线型属性 5.1.4坐标轴的控制方法 Matlab中对作图坐标轴的设置十分灵活,功能十分强大。 用命令docaxes可以获得完整的帮助文档。 与坐标轴设置相关的命令有: axis,get,set,gca等等。 下面对常用的坐标轴设置作简要介绍。 (1)作图坐标范围设置(axis命令) axis([xminxmaxyminymax])%用于设置x,y坐标作图范围 axisoff%用于不显示坐标 axison%用于显示坐标(默认) (2)网格的控制(grid命令等) gridon%用于显示网格 gridoff%用于不显示网格 set(gca,'XGrid','on')%用于只显示X方向网格 set(gca,'YGrid','on')%用于只显示Y方向网格 set(gca,'GridLineStyle',': ')%用于设置网格的线型,具体如下: %'-'表示实线;'--'表示虚线;': '表示虚点线(默认);'-.'表示点划线 (3)坐标轴线型的控制 set(gca,'LineWidth',2)%控制坐标轴线宽度为2(默认为1) (4)坐标形式的控制 set(gca,'box','on')%用于显示封闭形式的坐标(默认) set(gca,'box','off')%用于显示开放形式的坐标 (5)坐标刻度方向控制 set(gca,'TickDir','in')%坐标刻度朝内(默认) set(gca,'TickDir','out')%坐标刻度朝外 (6)坐标颜色控制 set(gca,'Color','y')%坐标面背景颜色设置,本例为: 黄 set(gca,'XColor','k')%设置横坐标轴,刻度,字符的颜色 set(gca,'YColor','r')%设置纵坐标轴,刻度,字符的颜色 (7)坐标刻度字形的控制 set(gca,'FontSize',14)%控制字体大小 set(gca,'FontWeight','bold')%设置字体粗细,有{normal}|bold|light|demi四种 (8)坐标位置和方向控制 set(gca,'XAxisLocation','top')%横坐标轴位于下方(bottom默认)或上方(top) set(gca,'YAxisLocation','right')%纵坐标轴位于左方(left默认)或右方(right) set(gca,'XDir','reverse')%横坐标反方向(由右到左为增) set(gca,'YDir','reverse')%纵坐标反方向(由右到左为增) (9)坐标刻度线性/对数标度的设置 set(gca,'XScale','log')%横坐标轴位作对数标度 set(gca,'YScale','log')%纵坐标轴位作对数标度 %默认为线性标度'linear'。 %用semilogx()或semilogy(),loglog(),plot()可直接得到对数标度的作图。 (10)坐标刻度数的控制 set(gca,'XTick',[])%横坐标不标度 set(gca,'XTick',[051629])%在横坐标值为0,5,16,29处标度 set(gca,'XTick',[20: 10: 100])%标度从20开始,间隔10标度,直到100 set(gca,'YTick',[])%对纵坐标的标度设置,同上 set(gca,'YTick',[0: 5: 20]) set(gca,'XTickLabel',{'One';'Two';'Three';'Four'}) %将开始的4个刻度依次标记为字符One,Two,Three,Four %然后循环利用这4个标记将其余刻度全部标完。 set(gca,'YTickLabel',{'One';'Two';'Three';'Four'}) %同上,对纵坐标作标记。 举例1: JohnG.Proakis著《数字通信》图5.2-4为二元信号的误码概率曲线。 复制如图5.5所示。 其中,两条曲线的计算公式为: 和 函数的定义是: 现在要求用Matlab生成该图,尽可能做到与原图接近。 作图分析: 观察图5.5,在作图时至少需要: ●曲线使用宽度为2的粗实线,颜色为黑; ●手工确定作图坐标范围并手工作出坐标刻度; ●进行标注,注意标注中需要写入公式等特殊字符,需用LaTeX格式; ●网格线需要设定为细实线; ●横坐标表示每比特SNR,用分贝表示,纵坐标是对数刻度的。 图5.5从《数字通信》图5.2-4复制的原图 作图程序如下: Q=inline('0.5.*erfc(x./sqrt (2))','x');%Q函数定义 gama_b_dB=0: 0.5: 14;%横坐标范围(分贝) gama_b=10.^(gama_b_dB./10);%横坐标范围 Pb1=Q(sqrt(gama_b));%曲线1计算 Pb2=Q(sqrt(2*gama_b));%曲线2计算 plot(gama_b_dB,Pb1,'-k',gama_b_dB,Pb2,'-k','LineWidth',2);%作图,线型为黑实线,宽度2像素 set(gca,'YScale','log');%纵坐标轴位作对数标度 axis([01410e-710e-1]);%手工设置作图范围 xlabel('SNRperbit,\gamma_b(dB)','FontSize',12);%横轴标注,并设定标注字号 ylabel('Probabilityoferror,P_b','FontSize',12);%纵轴标注,并设定标注字号 set(gca,'GridLineStyle','-');%用于设置网格的线型为实线 gridon;%开启网格线 set(gca,'MinorGridLineStyle','none');%将对数分格的虚线去掉 set(gca,'XTick',[0: 2: 14]);%在横坐标值为0,2,4...处标度 %下面是在图中写字 text(2.2,5e-3,'\rho_r=-1',... 'FontSize',12,... 'BackgroundColor','w'); text(2,2e-3,'Antipodal',... 'FontSize',12,... 'BackgroundColor','w'); text(2,1e-3,'signals',... 'FontSize',12,... 'BackgroundColor','w'); text(2,0.4e-3,'P_b=Q(\surd2\gamma_b)',... 'FontSize',12,... 'BackgroundColor','w'); text(10,2e-2,'\rho_r=0',... 'FontSize',12,... 'BackgroundColor','w'); text(10,9e-3,'Orthogonal',... 'FontSize',12,... 'BackgroundColor','w'); text(10,4e-3,'signals',... 'FontSize',12,... 'BackgroundColor','w'); text(10,1.5e-3,'P_b=Q(\surd\gamma_b)',... 'FontSize',12,... 'BackgroundColor','w'); 结果如图5.6所示。 图5.6用Matlab作出的曲线图,对比图5.5 举例2: 连续信号及其采样后的离散信号的表示。 任务: 以取样函数 为例,作出该函数在 内的波形图像。 f=inline('sin(x)./x','x');%定义波形函数 x=-10: 0.1: 10;%x的计算范围,步进0.1 y=f(x+1e-16);%计算波形,为避免0/0,x加一微小值 plot(x,y,'--k');%用黑色虚线作图(到此看一看作图结果) axis([-1010-0.31.1]);%到此作图坐标有何变化? holdon;%保持前图 boxoff;%坐标盒子打开(看一看坐标有何变化? ) sample_time=-10: 1: 10;%设定离散信号的取样间隔为1 y_sample=f(sample_time+1e-16);%计算离散信号样值 h=stem(sample_time,y_sample,'fill','-k'); %stem的用法与plot相同,专门用于画离散信号的火柴杆图 %stem的用法详见docstem帮助 结果如图5.7所示。 图5.7连续信号与离散信号在同一图中作出,注意boxoff的坐标形式 此外,我们还可以进一步对坐标轴标度进行手工设定。 例如将横坐标标度的字符进行任意设置,接上例,如果继续执行以下两句指令: set(gca,'XTick',[-10: 2.5: 0,4: 4: 10]);%设定标度位置 set(gca,'XTickLabel',{'-10Ts';'-7.5Ts';'-5Ts';'-2.5Ts';'0';'4Ts';'8Ts'});%设定标度的符号 set(gca,'FontSize',14);%设定坐标标注字号 则获得的结果如图5.8所示。 图5.8连续信号与离散信号在同一图中作出,对坐标标度进行了修改 举例3: 其他常用的特殊二维图形的绘制。 利用bar可以作出二维条形图,stairs可以作二维阶梯图。 其用法与plot类似。 t=0: 1/pi: 2*pi; plot(t,sin(t),'k','LineWidth',2); holdon; stairs(t,sin(t),'r');%阶梯图,注意与plot()所得图的区别 %阶梯图常用来表现取样后零阶保持器的输出波形 bar(t,0.5*sin(t),'m');%条形图,注意正弦波幅度减小了 axis([02*pi-1.11.1]);%坐标范围 则获得的结果如图5.9所示。 图5.9正弦波的plot,stairs,bar作图表达的比较 5.1.5用极坐标作图 利用极坐标作图命令polar可以绘制极坐标表达的函数曲线。 例如绘制方程 和方程 : theta=0: 0.1: 10*pi; r=0.001*theta.^2; polar(theta,r);%作极坐标曲线1并保持 holdon; t=0: 0.01: 2*pi; polar(t,sin(2*t).*cos(2*t),'-k');%作极坐标曲线2 得到极坐标图如图5.11所示。 图5.11用命令polar进行极坐标作图 5.2三维图形的绘制 5.2.1三维曲线的绘制 用命令plot3可以进行三维空间曲线的绘制。 plot3的常用格式是: plot3(X1,Y1,Z1,...)plot3(...,'PropertyName',PropertyValue,...) 详细用法参见docplot3显示的帮助文档。 举例如下,绘制三维曲线: t=0: 0.01: 15*pi; x=(10*pi-t).*sin(t); y=(10*pi-t).*cos(t); z=t; plot3(x,y,z,'-k','LineWidth',3);%作图,设定线型 gridon;%看一看,曲线像不像沙发的弹簧? 程序运行结果如图5.12所示。 图5.12三维曲线作图实例 采用命令stem3(x,y,z)可以作出三维火柴杆图。 例如: t=0: 0.1: 2*pi; x=(10*pi-t).*sin(t); y=(10*pi-t).*cos(t); z=t; stem3(x,y,z);%作图 gridon; 运行结果为图5.13所示。 图5.13用stem3进行的三维曲线作图实例 5.2.2三维曲面的绘制 Matlab绘制三维曲面的命令有: (1)mesh(x,y,z)——绘制三维表面网格。 (2)surf(x,y,z)——绘制三维表面图。 这些命令的详细用法请参考帮助文档。 下面举例加以说明。 考虑绘制一个二元函数 为: 其中,绘制范围为 , 。 首先用meshgrid函数产生一个 和 的网格矩阵,即产生一个 轴坐标起始于-3,终止于3,步进为1的; 坐标起始于-2,终止于2,步进为1的网格分割。 其命令是: >>[x,y]=meshgrid(-3: 1: 3,-2: 1: 2) x= -3-2-10123 -3-2-10123 -3-2-10123 -3-2-10123 -3-2-10123 y= -2-2-2-2-2-2-2 -1-1-1-1-1-1-1 0000000 1111111 2222222 然后将得到的 和 代入 中计算出 。 即 >>z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y) z= 0.00000.00000.00270-0.049800.0027 0.00000.00730.14940-0.367900.0027 0.00190.14651.10360-0.367900.0004 0.01370.39831.10360-0.049800.0000 0.01370.14650.14940-0.000900.0000 最后用 mesh(x,y,z); 作出三维表面网格图。 得到结果如图5.14所示。 图5.14用mesh进行的三维表面网格作图实例 为了使得作图更加精细,可以减小生成 , 网格的步进,当然,这是以增加计算量和内存需求为代价的。 即 [x,y]=meshgrid(-3: 0.1: 3,-2: 0.1: 2);z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y); mesh(x,y,z); 则得到更精细的结果,如图5.15所示。 图5.15更加精细的三维网格作图实例 利用命令 hiddenoff 可以使得网格“透明”,如图5.16所示。 图5.16显示隐含线的网格图 采用surf(x,y,z)代替mesh(x,y,z)后,则可以绘制出三维表面图形。 如图5.17所示。 图5.17三维表面图 如果使用指令meshc、meshz代替mesh指令,即 [x,y]=meshgrid(-3: 0.1: 3,-2: 0.1: 2);z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y); figure (1); meshc(x,y,z); figure (2); meshz(x,y,z); 则分别作出带等高线图的以及给出零基准平面的三维网格图。 如图5.18所示。 图5.18(a)命令meshc带等高线的三维图(b)命令meshz给出零基准平面的三维图 如果使用指令surfc、surfl代替surf指令,则分别作出带等高线的三维表面图以及具有光照效果的三维表面图。 如图5.19所示。 即 [x,y]=meshgrid(-3: 0.1: 3,-2: 0.1: 2);z=(x.^
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 绘图 功能