MATLAB二维平面绘图教程.ppt
MATLAB 程序设计入门篇二维平面绘图CUMCM CUMCM 暑期培训暑期培训MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训3-1 基本的绘图指令nPlot:最基本的绘图指令n对 x 坐标及相对应的 y 坐标进行作图n范例3-1:plotxy01.mx=linspace(0,2*pi,100);%在 0 到 2 间,等分取 100 个点y=sin(x);%计算 x 的正弦函数值plot(x,y);%进行二维平面描点作图MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训Plot基本绘图-1nlinspace(0,2*pi)产生从 0 到 2 且长度为 100(预设值)的向量 xny 是对应的 y 坐标n只给定一个向量n该向量则对其索引值(Index)作图nplot(y)和plot(1:length(y),y)会得到相同的结果 MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训Plot基本绘图-2(I)n一次画出多条曲线n将 x 及 y 坐标依次送入plot 指令n范例3-2:plotxy02.mx=linspace(0,2*pi,100);%在 0 到 2 间,等分取 100 个点,100为系统的默认值plot(x,sin(x),x,cos(x),x,sin(x)+cos(x);%进行多条曲线描点作图MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训Plot基本绘图-2(II)Plot(x,sin(x),x,cos(x),x,sin(x)+cos(x);画出多条曲线时,会自动轮换曲线颜色 MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训Plot基本绘图-3(I)n若要以不同的线标(Marker)来作图n范例3-3:plotxy03.mx=linspace(0,2*pi);%在 0 到 2 间,等分取 100 个点plot(x,sin(x),o,x,cos(x),x,x,sin(x)+cos(x),*);MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训Plot基本绘图-3(II)MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训Plot基本绘图-4(I)n只给定一个矩阵 yn对矩阵 y 的每一个列向量(Column Vector)作图n范例3-4:plot04.my=peaks;%产生一个 4949 的矩阵plot(y);%对矩阵 y 的每一个行向量作图MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训Plot基本绘图-4(II)npeaks 指令产生一个4949的矩阵,代表二维函数的值nplot(y)直接画出 49 条直线n类似于从侧面观看 peaks 函数MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训Plot基本绘图-5(I)nx 和 y 都是矩阵nplot(x,y)会取用 y 的每一个列向量和对应的 x 列向量作图n范例3-5:plotxy05.mx=peaks;y=x;%求矩阵 x 的转置矩阵 xplot(x,y);%取用矩阵 y 的每一行向量,与对应矩阵 x%的每一个行向量作图MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训Plot基本绘图-5(II)MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训提示n一般情况下,MATLAB 将矩阵视为列向量的集合n对只能处理向量的函数(Ex:max、min、mean)n给定一个矩阵,函数会对矩阵的列向量一一进行处理或运算MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训Plot基本绘图-6(I)nz 是一个复数向量或矩阵nplot(z)将 z 的实部(即 real(z)和虚部(即 imag(z)当成 x 坐标和 y 坐标来作图,n其效果等于 plot(real(z),imag(z)n范例3-6:plotxy06.mx=randn(30);%产生 3030 的随机数(正态分布)矩阵z=eig(x);%计算 x 的特征值plot(z,o)grid on%画出网格线MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训Plot基本绘图-6(II)nx 是一个 3030 的随机数矩阵nz 则是 x 的特征值(Eigenvalue)nz 是复数向量,且每一个复数都和其共轭复数同时出现,因此画出的图是上下对称MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训基本二维绘图指令指令说明Plotx 轴和 y 轴均为线性刻度(Linear Scale)loglogx 轴和 y 轴均为对数刻度(Logarithmic Scale)semilogxx 轴为对数刻度,y 轴为线性刻度semilogyx 轴为线性刻度,y 轴为对数刻度plotyy画出两个刻度不同的y轴MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训Plot基本绘图-7(I)nSemilogx指令n使 x 轴为对数刻度,对正弦函数作图n范例plotxy07.mx=linspace(0,8*pi);%在 0 到 8 间,等分取 100 个点semilogx(x,sin(x);%使 x 轴为对数刻度,并对其正弦函数作图MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训Plot基本绘图-7(II)X轴为对数刻度MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训Plot基本绘图-8(I)nplotyy 指令n画出两个刻度不同的 y 轴n范例3-8:plotxy08.mx=linspace(0,2*pi);%在 0 到 2 间,等分取 100 个点y1=sin(x);y2=exp(-x);plotyy(x,y1,x,y2);%画出两个刻度不同的 y 轴,分别是 y1,y2MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训Plot基本绘图-8(II)ny1 的刻度是在左手边ny2 的刻度是在右手边n两边的刻度不同Y1的刻度Y2的刻度MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训3-2 图形的控制nplot 指令,可以接受一个控制字符串输入n用以控制曲线的颜色、格式及线标n使用语法plot(x,y,CLM)nC:曲线的颜色(Colors)nL:曲线的格式(Line Styles)nM:曲线所用的线标(Markers)MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训图形控制范例-1(I)n用黑色点线画出正弦波n每一数据点画上一个小菱形n范例3-9:plotxy09.mx=0:0.5:4*pi;%x 向量的起始与结束元素为 0 及 4 ,%0.5为各元素相差值y=sin(x);plot(x,y,k:diamond)%其中k代表黑色,:代表点%线,而diamond 则指定菱形为曲%线的线标MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训图形控制范例-1(II)MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训plot 指令的曲线颜色 Plot指令的曲线颜色字符串曲线颜色RGB值b蓝色(Blue)(0,0,1)c青蓝色(Cyan)(0,1,1)g绿色(Green)(0,1,0)k黑色(Black)(0,0,0)m紫黑色(Magenta)(1,0,1)r红色(Red)(1,0,0)w白色(1,1,1)y黄色(Yellow)(1,1,0)MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训plot 指令的曲线格式 plot 指令的曲线格式字符串曲线格式-实线(预设值)-虚线:点线-.点虚线MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训plot 指令的曲线线标(I)plot 指令的曲线线标字符串曲线符号符号O圆形+加号X叉号*星号.点号朝上三角形V朝下三角形MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训plot 指令的曲线线标(II)plot 指令的曲线线标字符串曲线符号符号朝右三角形朝左三角形square方形diamond菱形pentagram五角星形hexagram六角星形None无符号(预设值)MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训3-3 图轴的控制nplot 指令会根据坐标点自动决定图轴范围n也可以使用 axis 指令指定图轴范围n使用语法:axis(xmin,xmax,ymin,ymax)nxmin,xmax:指定 x 轴的最小和最大值nymin,ymax:指定 y 轴的最小和最大值MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训图轴控制范例-1(I)n画出正弦波在 y 轴介于 0 和 1 的部份n范例3-10:plotxy10.mx=0:0.1:4*pi;%起始与结束元素为 0 及 4,0.1 为间隔步长y=sin(x);plot(x,y);axis(-inf,inf,0,1);%画出正弦波 y 轴介于 0 和 1 的部份MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训图轴控制范例-1(II)ninf指令:n以数据点(上例:x 轴的数据点)的最小和最大值取代之MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训图轴控制范例-2(I)n指定图轴上的网格线点(Ticks)n范例3-11:plotxy11.mx=0:0.1:4*pi;plot(x,sin(x)+sin(3*x)set(gca,ytick,-1-0.3 0.1 1);%在 y 轴加上网格线点grid on%加上网格线MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训图轴控制范例-2(II)ngrid on:加上网格线ngca:nget current axis的简称n传回目前使用中的图轴ngca属Handle Graphics的指令,第七章会有更详细的说明 使用者加入的网格线点和文字MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训图轴控制范例-3(I)n将网格线点的数字改为文字n范例3-12:plotxy12.mx=0:0.1:4*pi;plot(x,sin(x)+sin(3*x)set(gca,ytick,-1-0.3 0.1 1);%改变网格线点set(gca,yticklabel,极小,临界值,崩溃值,极大);%改变网格线点的文字grid on%加上网格线MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训图轴控制范例-3(II)MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训Subplotnsubplotn在一个窗口产生多个图形(图轴)n一般形式为subplot(m,n,p)n将窗口分为 m n 个区域n下一个 plot 指令绘图于第 p 个区域np 的算法为由左至右,一列一列MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训图轴控制范例-4(I)n同时画出四个图于一个窗口中n范例3-13:plotxy13.mx=0:0.1:4*pi;subplot(2,2,1);plot(x,sin(x);%此为左上角图形subplot(2,2,2);plot(x,cos(x);%此为右上角图形subplot(2,2,3);plot(x,sin(x).*exp(-x/5);%此为左下角图形subplot(2,2,4);plot(x,x.2);%此为右下角图形MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训图轴控制范例-4(II)Subplot(2,2,1)Subplot(2,2,3)Subplot(2,2,2)Subplot(2,2,4)MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训图轴控制范例-5(I)n长宽比(Aspect Ratio)n一般图轴长宽比是窗口的长宽比n可在 axis 指令后加不同的字符串来修改n范例3-14:plotxy14.mt=0:0.1:2*pi;x=3*cos(t);y=sin(t);subplot(2,2,1);plot(x,y);axis normalsubplot(2,2,2);plot(x,y);axis squaresubplot(2,2,3);plot(x,y);axis equalsubplot(2,2,4);plot(x,y);axis equal tightMATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训图轴控制范例-5(II)axis normalaxis equalaxis squareaxis square tightMATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训改变图轴长宽比的指令n改变目前图轴长宽比的指令n需在 plot 指令之后运行才能发挥效用指令说明axis normal使用预设长宽比(等于图形长宽比)axis square长宽比例为 1axis equal长宽比例不变,但两轴刻度一致axis equal tight两轴刻度比例一致,且图轴贴紧图形axis image两轴刻度比例一致(适用于影像显示)MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训改变图轴背景颜色的指令ncolordefn改变图轴与窗口之背景颜色n先运行 colordef 指令,其后 plot 指令产生的图形才有效用指令说明colordef white图轴背景为白色,窗口背景为浅灰色colordef black图轴背景为黑色,窗口背景为暗灰色colordef none图轴背景为黑色,窗口背景为黑色(这是 MATLAB 第 4 版的预设值)MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训grid 和 box 指令n画出网格线或画出图轴外围的方形指令说明grid on画出网格线grid off取消网格线box on画出图轴的外围长方形box off取消图轴的外围长方形MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训3-4 加入说明文字n在图形或图轴加入说明文字,增进整体图形的可读性指令说明title图形的标题xlabelx 轴的说明ylabely 轴的说明zlabelz 轴的说明(适用于立体绘图)legend多条曲线的说明text在图形中加入文字gtext使用鼠标决定文字的位置MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训说明文字范例-1(I)n范例3-15:plotxy15.msubplot(1,1,1);x=0:0.1:2*pi;y1=sin(x);y2=exp(-x);plot(x,y1,-*,x,y2,:o);xlabel(t=0 to 2pi);ylabel(values of sin(t)and e-x)title(Function Plots of sin(t)and e-x);legend(sin(t),e-x);MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训说明文字范例-1(II)nlegend 指令n画出一小方块,包含每条曲线的说明n为特殊符号n产生上标、下标、希腊字母、数学符号等n遵循一般 LaTex 或 TeX数学模式MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训说明文字范例-2(I)ntext指令n使用语法:text(x,y,string)nx、y:文字的起始坐标位置nstring:代表此文字n范例3-16:plotxy16.mx=0:0.1:2*pi;plot(x,sin(x),x,cos(x);text(pi/4,sin(pi/4),leftarrow sin(pi/4)=0.707);text(5*pi/4,cos(5*pi/4),cos(5pi/4)=-0.707rightarrow,HorizontalAlignment,right);MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训说明文字范例-2(II)nHorizontalAlignment及right指示 text 指令将文字向右水平靠齐MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训gtext指令n使用语法gtext(string)n在图上点选一位置后,string 显示在其上。ngtext 只能用在二维平面绘图 MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训3-5 其它平面绘图指令n各种二维绘图指令指令说明errorbar在曲线加上误差范围fplot、ezplot较精确的函数图形polar、ezpolar极坐标图形hist直角坐标质方图(累计图)rose极坐标质方图(累计图)compass罗盘图feather羽毛图area面积图(第五章特殊图形介绍)stairs阶梯图(第五章特殊图形介绍)MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训其它平面绘图范例-1(I)n已知数据的误差范围,用 errorbar 表示n以 y 坐标高度 20%作为做数据的误差范围n范例3-17:plotxy17.mx=linspace(0,2*pi,30);%在 0 到 2间,等分取 30 个点y=sin(x);e=y*0.2;errorbar(x,y,e)%图形上加上误差范围 eMATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训其它平面绘图范例-1(II)误差范围MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训其它平面绘图范例-2(I)nfplot 指令n对剧烈变化处进行较密集的取样n范例3-18:plotxy18.mfplot(sin(1/x),0.02 0.2);%0.02 0.2是绘图范围MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训其它平面绘图范例-2(II)此区作较精确的取点绘图MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训其它平面绘图范例-3(I)npolar 指令n产生极坐标图形n范例3-19:plotxy19.mtheta=linspace(0,2*pi);r=cos(4*theta);polar(theta,r);%进行极坐标绘图MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训其它平面绘图范例-3(II)MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训直方图及hist指令n直方图(Histogram)n对大量的数据,显示数据的分布情况和统计特性nhist指令n将数据依大小分成数块,将每块的个数画出MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训其它平面绘图范例-4(I)n将 10000 个由 randn 产生的正态分布之随机数分成 25 块n范例3-20:plotxy20.mx=randn(10000,1);%产生 10000 个正态分布随机数hist(x,25);%绘出直方图,显示 x 数据的分布情%况和统计特性,数字 25 代表数据依%大小分块的块数,即是指方图内长条%的个数set(findobj(gca,type,patch),edgecolor,w);%将长条%图的边缘设定成白色MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训其它平面绘图范例-4(II)n直方图逼近随机数的概率分布函数,且数据量越大时,逼近程度越高MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训其它平面绘图范例-5(I)nrose指令n角度:数据大小n距离:数据个数n以极坐标绘制表示n范例3-21:plotxy21.mx=randn(5000,1);%产生 5000 个正态分布的随机数rose(x);%x 数据大小为角度,x 数据个数为距离,%以绘制类似玫瑰花瓣的极坐标直方图 MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训其它平面绘图范例-5(II)MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训其它平面绘图范例-6(I)ncompass 指令n画出以原点为起始点的向量图n称为罗盘图n范例3-22:plotxy22.mtheta=linspace(0,2*pi,50);rho=sin(0.5*theta);x,y=pol2cart(theta,rho);%由极坐标转换至直角坐标compass(x,y);%画出以原点为向量起始点%的罗盘图MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训其它平面绘图范例-6(II)n范例3-23:plotxy23.mn若只有一个自变量输入zn将 z 的实部做为 x 坐标,将 z 的虚部做为 y 坐标,再进行作图ncompass(z)即等效于 compass(real(z),imag(z)n上述四列程序码可简化theta=linspace(0,2*pi,50);compass(sin(0.5*theta).*exp(j*theta);MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训其它平面绘图范例-7(I)n羽毛图n起始点是(k,0),k=1n,其中 n 是向量个数n范例3-24:plotxy24.mtheta=linspace(0.2*pi,50);rho=10;x,y=pol2cart(theta,rho);%由极坐标转换至直角坐标feather(x,y);%绘制羽毛图MATLAB 程序设计入门篇:二维平面绘图NCU MCM NCU MCM 暑期培训暑期培训其它平面绘图范例-8(I)