① matlab 中mesh、meshgrid、meshz的作用有什么不同
用mesh画三维图,先要meshgrid,就是将xoy平面用你定义的x,y向量网格化,之后对每一个得到的点求其对应的函数值,最后用mesh将函数图像做出来,你如果还有不清楚的地方,可以在command window 下敲“doc mesh”或是“doc meshgrid”。
meshz是绘制带有“围裙”的网状图,只是图形的视觉效果与mesh不同。
② matlab如何画三维图
1、plot3三维曲线图。
启动MATLAB,新建脚本(.m文件),在脚本编辑区输入以下代码,然后保存运行后,看到三维曲线图。
close all;clear all;clc
z=linspace(0,10,101);
x=sin(z);y=cos(z);
plot3(x,y,z,'g','LineWidth',2)
hold on
plot3(x,y,z,'p','MarkerSize',10)
其中,linspace(a1,a2,N) 是生成间距为(a2-a1)/(N-1)、个数为N的数组的命令。
③ 谁有MATLAB绘图大全啊
matlab绘图大全 一。 二维数据曲线图1.1 绘制 单根二维曲线 plot 函数的基本调用 格式为: plot(x,y) 其中x和y为长度相同的向量,分别用于存储x坐标 和y坐标数据。 例1-1 在0≤x≤2p区间内,绘制曲线 y=2e-0.5xcos(4πx)程序 如下:x=0:pi/100:2*pi;y=2*exp(-0.5*x).*cos(4*pi*x);plot(x,y) 例1-2 绘制曲线。 程序如下:t=0:0.1:2*pi;x=t.*sin(3*t);y=t.*sin(t).*sin(t);plot(x,y); plot函数最简单的调用格式是只包含一个输入参数 : plot(x)在这种情况下,当x是实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画出一条连续曲线,这实际上是绘制折线图。 1.2 绘制多根二维曲线 1.plot函数的输入参数是矩阵 形式 (1) 当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同颜色 的曲线。曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。 (2) 当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。 (3) 对只包含一个输入参数的plot函数,当输入参数是实矩阵时,则按列绘制每列元素值相对其下标的曲线,曲线条数等于输入参数矩阵的列数。 当输入参数是复数矩阵时,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。 2.含多个输入参数的plot函数 调用格式为:plot(x1,y1,x2,y2,…,xn,yn)(1) 当输入参数都为向量时,x1和y1,x2和y2,…,xn和yn分别组成一组向量对,每一组向量对的长度可以不同。每一向量对可以绘制出一条曲线,这样可以在同一坐标内绘制出多条曲线。 (2) 当输入参数有矩阵形式时,配对的x,y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。 例1-3 分析下列程序绘制的曲线。 x1=linspace(0,2*pi,100);x2=linspace(0,3*pi,100);x3=linspace(0,4*pi,100);y1=sin(x1);y2=1+sin(x2);y3=2+sin(x3);x=[x1;x2;x3]';y=[y1;y2;y3]';plot(x,y,x1,y1-1) 3.具有两个纵坐标标度的图形 在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数。调用格式为: plotyy(x1,y1,x2,y2)其中x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1,y1数据对,右纵坐标用于x2,y2数据对。 例1-4 用不同标度在同一坐标内绘制曲线y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx)。 程序如下:x=0:pi/100:2*pi;y1=0.2*exp(-0.5*x).*cos(4*pi*x);y2=2*exp(-0.5*x).*cos(pi*x);plotyy(x,y1,x,y2); 4.图形保持 hold on/off命令 控制 是保持原有图形还是刷新原有图形,不带参数的hold命令在两种状态之间进行切换。 例1-5 采用图形保持,在同一坐标内绘制曲线y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx)。 程序如下:x=0:pi/100:2*pi;y1=0.2*exp(-0.5*x).*cos(4*pi*x);plot(x,y1)hold ony2=2*exp(-0.5*x).*cos(pi*x);plot(x,y2);hold off 1.3 设置曲线样式 MATLAB提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号,它们可以组合使用。例如,“b-.”表示蓝色点划线,“y:d”表示黄色虚线并用菱形符标记数据点。当选项省略时,MATLAB规定,线型一律用实线,颜色将根据曲线的先后顺序依次。 要设置曲线样式可以在plot函数中加绘图选项,其调用格式为: plot(x1,y1,选项1,x2,y2,选项2,…,xn,yn,选项n) 例1-6 在同一坐标内,分别用不同线型和颜色绘制曲线y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx),标记两曲线交叉点。 程序如下:x=linspace(0,2*pi,1000);y1=0.2*exp(-0.5*x).*cos(4*pi*x);y2=2*exp(-0.5*x).*cos(pi*x);k=find(abs(y1-y2)<1e-2); %查找y1与y2相等点(近似相等)的下标 x1=x(k); %取y1与y2相等点的x坐标 y3=0.2*exp(-0.5*x1).*cos(4*pi*x1); %求y1与y2值相等点的y坐标 plot(x,y1,x,y2,'k:',x1,y3,'bp'); 1.4 图形标注与坐标控制 1.图形标注 有关图形标注函数的调用格式为:title(图形名称) xlabel(x轴说明) ylabel(y轴说明) text (x,y,图形说明) legend(图例1,图例2,…) 函数中的说明文字,除使用标准的ASCII字符外,还可使用LaTeX格式的控制字符,这样就可以在图形上添加希腊字母、数学符号及公式等内容。例如,text(0.3,0.5,‘sin({\omega}t+{\beta})’)将得到标注效果sin(ωt+β)。 例1-7 在0≤x≤2p区间内,绘制曲线y1=2e-0.5x和y2=cos(4πx),并给图形添加图形标注。 程序如下:x=0:pi/100:2*pi;y1=2*exp(-0.5*x);y2=cos(4*pi*x);plot(x,y1,x,y2)title('x from 0 to 2{\pi}'); %加图形标题 xlabel('Variable X'); %加X轴说明 ylabel('Variable Y'); %加Y轴说明 text(0.8,1.5,'曲线y1=2e^{-0.5x}'); %在指定位置添加图形说明 text(2.5,1.1,'曲线y2=cos(4{\pi}x)'); legend(‘y1’,‘ y2’) %加图例 2.坐标控制 axis函数 的调用格式为: axis([xmin xmax ymin ymax zmin zmax])axis函数功能丰富,常用的格式还有: axis equal:纵、横坐标轴采用等长刻度。 axis square:产生正方形坐标系(缺省为矩形)。 axis auto:使用缺省设置。 axis off:取消坐标轴。 axis on:显示 坐标轴。 给坐标加网格线用grid命令来控制。grid on/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。 给坐标加边框用box命令来控制。box on/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换。 例1-8 在同一坐标中,可以绘制3个同心圆,并加坐标控制。 程序如下:t=0:0.01:2*pi;x=exp(i*t);y=[x;2*x;3*x]';plot(y)grid on; %加网格线 box on; %加坐标边框 axis equal %坐标轴采用等刻度 1.5 图形的可视化编辑 MATLAB 6.5版本在图形窗口中提供了可视化的图形编辑工具,利用图形窗口菜单栏或工具栏中的有关命令可以完成对窗口中各种图形对象的编辑处理。 在图形窗口上有一个菜单栏和工具栏。菜单栏包含File、Edit、View、Insert、Tools、Window和Help共7个菜单项,工具栏包含11个命令按钮。 1.6 对函数自适应采样的绘图函数 fplot函数的调用格式为: fplot(fname,lims,tol,选项) 其中fname为函数名,以字符串形式出现,lims为x,y的取值范围,tol为相对允许误差,其系统 默认值为2e-3。选项定义与plot函数相同。 例1-9 用fplot函数绘制f(x)=cos(tan(πx))的曲线。 命令如下:fplot('cos(tan(pi*x))',[ 0,1],1e-4) 1.7 图形窗口的分割 subplot函数的调用格式为: subplot(m,n,p)该函数将当前图形窗口分成m×n个绘图区,即每行n个,共m行,区号按行优先编号,且选定第p个区为当前活动区。在每一个绘图区允许以不同的坐标系单独绘制图形。 例5-10 在图形窗口中,以子图形式同时绘制多根曲线。 二。 其他二维图形2.1 其他坐标系下的二维数据曲线图 1.对数坐标图形 MATLAB提供了绘制对数和半对数坐标曲线的函数,调用格式为: semilogx(x1,y1,选项1,x2,y2,选项2,…) semilogy(x1,y1,选项1,x2,y2,选项2,…) loglog(x1,y1,选项1,x2,y2,选项2,…) 2.极坐标图 polar函数用来绘制极坐标图,其调用格式为: polar(theta,rho,选项) 其中theta为极坐标极角,rho为极坐标矢径,选项的内容与plot函数相似。 例1-12 绘制r=sin(t)cos(t)的极坐标图,并标记数据点。 程序如下:t=0:pi/50:2*pi;r=sin(t).*cos(t);polar(t,r,'-*'); 2.2 二维统计分析图 在MATLAB中,二维统计分析图形很多,常见的有条形图、阶梯图、杆图和填充图等,所采用的函数分别是: bar(x,y,选项) stairs(x,y,选项) stem(x,y,选项) fill(x1,y1,选项1,x2,y2,选项2,…) 例1-13 分别以条形图、阶梯图、杆图和填充图形式绘制曲线y=2sin(x)。 程序如下:x=0:pi/10:2*pi;y=2*sin(x);subplot(2,2,1);bar(x,y,'g');title('bar(x,y,''g'')');axis([0,7,-2,2]);subplot(2,2,2);stairs(x,y,'b');title('stairs(x,y,''b'')');axis([0,7,-2,2]);subplot(2,2,3);stem(x,y,'k');title('stem(x,y,''k'')');axis([0,7,-2,2]);subplot(2,2,4);fill(x,y,'y');title('fill(x,y,''y'')');axis([0,7,-2,2]); MATLAB提供的统计分析绘图函数还有很多,例如,用来表示各元素占总和的百分比的饼图、复数的相量图等等。 例1-14 绘制图形: (1) 某企业全年各季度的产值(单位:万元)分别为:2347,1827,2043,3025,试用饼图作统计分析。 (2) 绘制复数的相量图:7+2.9i、2-3i和-1.5-6i。 程序如下:subplot(1,2,1);pie([2347,1827,2043,3025]);title('饼图'); legend('一季度','二季度','三季度','四季度'); subplot(1,2,2);compass([7+2.9i,2-3i,-1.5-6i]);title('相量图'); 三。 隐函数绘图MATLAB提供了一个ezplot函数绘制隐函数图形,下面介绍其用法。 (1) 对于函数f = f(x),ezplot函数的调用格式为: ezplot(f):在默认区间-2π<x<2π绘制f = f(x)的图形。 ezplot(f, [a,b]):在区间a<x<b绘制f = f(x)的图形。 (2) 对于隐函数f = f(x,y),ezplot函数的调用格式为: ezplot(f):在默认区间-2π<x<2π和-2π<y<2π绘制f(x,y) = 0的图形。 ezplot(f, [xmin,xmax,ymin,ymax]):在区间xmin<x<xmax和ymin<y<ymax绘制f(x,y) = 0的图形。 ezplot(f, [a,b]):在区间a<x<b和a<y< b绘制f(x,y) = 0的图形。 (3) 对于参数方程 x = x(t)和y = y(t),ezplot函数的调用格式为: ezplot(x,y):在默认区间0<t<2π绘制x=x(t)和y=y(t)的图形。 ezplot(x,y, [tmin,tmax]):在区间tmin < t < tmax绘制x=x(t)和y=y(t)的图形。 例1-15 隐函数绘图应用 举例。 程序如下:subplot(2,2,1);ezplot('x^2+y^2-9');axis equalsubplot(2,2,2);ezplot('x^3+y^3-5*x*y+1/5')subplot(2,2,3);ezplot('cos(tan(pi*x))',[ 0,1])subplot(2,2,4);ezplot('8*cos(t)','4*sqrt(2)*sin(t)',[0,2*pi]) 四。三维图形4.1 三维曲线 plot3函数与plot函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n) 其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同。当x,y,z是同维向量时,则x,y,z 对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵列数。 例1-16 绘制三维曲线。 程序如下:t=0:pi/100:20*pi;x=sin(t);y=cos(t);z=t.*sin(t).*cos(t);plot3(x,y,z);title('Line in 3-D Space');xlabel('X');ylabel('Y');zlabel('Z');grid on; 4.2 三维曲面 1.产生三维数据 在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格式为: x=a:d1:b; y=c:d2:d;[X,Y]=meshgrid(x,y);语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。 2.绘制三维曲面的函数 surf函数和mesh函数的调用格式为: mesh(x,y,z,c)surf(x,y,z,c)一般情况下,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。 例1-17 绘制三维曲面图z=sin(x+sin(y))-x/10。 程序如下:[x,y]=meshgrid(0:0.25:4*pi);z=sin(x+sin(y))-x/10;mesh(x,y,z);axis([0 4*pi 0 4*pi -2.5 1]);此外,还有带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz。其用法与mesh类似,不同的是meshc还在xy平面上绘制曲面在z轴方向的等高线,meshz还在xy平面上绘制曲面的底座。 例1-18 在xy平面内选择区域[-8,8]×[-8,8],绘制4种三维曲面图。 程序如下:[x,y]=meshgrid(-8:0.5:8);z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);subplot(2,2,1);mesh(x,y,z);title('mesh(x,y,z)')subplot(2,2,2);meshc(x,y,z);title('meshc(x,y,z)')subplot(2,2,3);meshz(x,y,z)title('meshz(x,y,z)')subplot(2,2,4);surf(x,y,z);title('surf(x,y,z)') 3.标准三维曲面 sphere函数的调用格式为: [x,y,z]=sphere(n)cylinder函数的调用格式为: [x,y,z]= cylinder(R,n)MATLAB还有一个peaks 函数,称为多峰函数,常用于三维曲面的演示。 <!--[if !supportEmptyParas]--> <!--[endif]-->例1-19 绘制标准三维曲面图形。 程序如下:t=0:pi/20:2*pi;[x,y,z]= cylinder(2+sin(t),30);subplot(2,2,1);surf(x,y,z);subplot(2,2,2);[x,y,z]=sphere;surf(x,y,z);subplot(2,1,2);[x,y,z]=peaks(30); surf(x,y,z);<!--[if !supportEmptyParas]--> <!--[endif]-->4.3 其他三维图形 在介绍二维图形时,曾提到条形图、杆图、饼图和填充图等特殊图形,它们还可以以三维形式出现,使用的函数分别是bar3、stem3、pie3 和fill3。 bar3函数绘制三维条形图,常用格式为: bar3(y)bar3(x,y) stem3函数绘制离散序列数据的三维杆图,常用格式为: stem3(z)stem3(x,y,z)pie3函数绘制三维饼图,常用格式为: pie3(x)fill3函数等效于三维函数fill,可在三维空间内绘制出填充过的多边形,常用格式为: fill3(x,y,z,c)<!--[if !supportEmptyParas]--> <!--[endif]-->例1-20 绘制三维图形: (1) 绘制魔方阵的三维条形图。 (2) 以三维杆图形式绘制曲线y=2sin(x)。 (3) 已知x=[2347,1827,2043,3025],绘制饼图。 (4) 用随机的顶点坐标值画出五个黄色三角形。 程序如下:subplot(2,2,1);bar3(magic(4))subplot(2,2,2);y=2*sin(0:pi/10:2*pi);stem3(y);subplot(2,2,3);pie3([2347,1827,2043,3025]);subplot(2,2,4);fill3(rand(3,5),rand(3,5),rand(3,5), 'y' ) 例1-21 绘制多峰函数的瀑布图和等高线图。 程序如下:subplot(1,2,1);[X,Y,Z]=peaks(30);waterfall(X,Y,Z)xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis');subplot(1,2,2);contour3(X,Y,Z,12,'k'); %其中12代表高度的等级数 xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis');<!--[if !supportEmptyParas]--> 五。 图形修饰处理5.1 视点处理 MATLAB提供了设置视点的函数view,其调用格式为: view(az,el)其中az为方位角,el为仰角,它们均以度为单位。系统缺省的视点定义为方位角-37.5°,仰角30°。 例5-22 从不同视点观察三维曲线。 5.2 色彩处理 1.颜色的向量表示 MATLAB除用字符表示颜色外,还可以用含有3个元素的向量表示颜色。向量元素在[0,1]范围取值,3个元素分别表示红、绿、蓝3种颜色的相对亮度,称为RGB三元组。 <!--[if !supportEmptyParas]--> <!--[endif]-->2.色图 色图(Color map)是MATLAB系统引入的概念。在MATLAB中,每个图形窗口只能有一个色图。色图是m×3 的数值矩阵,它的每一行是RGB三元组。色图矩阵可以人为地生成,也可以调用MATLAB提供的函数来定义色图矩阵。 3.三维表面图形的着色 三维表面图实际上就是在网格图的每一个网格片上涂上颜色。surf函数用缺省的着色方式对网格片着色。除此之外,还可以用shading命令来改变着色方式。 shading faceted命令将每个网格片用其高度对应的颜色进行着色,但网格线仍保留着,其颜色是黑色。这是系统的缺省着色方式。 shading flat命令将每个网格片用同一个颜色进行着色,且网格线也用相应的颜色,从而使得图形表面显得更加光滑。 shading interp命令在网格片内采用颜色插值处理,得出的表面图显得最光滑。 例1-23 3种图形着色方式的效果展示。 程序如下:[x,y,z]=sphere(20);colormap(copper);subplot(1,3,1);surf(x,y,z);axis equalsubplot(1,3,2);surf(x,y,z);shading flat;axis equalsubplot(1,3,3);surf(x,y,z);shading interp;axis equal 5.3 光照处理 MATLAB提供了灯光设置的函数,其调用格式为: light('Color',选项1,'Style',选项2,'Position',选项3) <!--[if !supportEmptyParas]--> <!--[endif]-->例5-24 光照处理后的球面。 程序如下:[x,y,z]=sphere(20);subplot(1,2,1);surf(x,y,z);axis equal;light('Posi',[0,1,1]);shading interp;hold on;plot3(0,1,1,'p');text(0,1,1,' light');subplot(1,2,2);surf(x,y,z);axis equal;light('Posi',[1,0,1]);shading interp;hold on;plot3(1,0,1,'p');text(1,0,1,' light'); 5.4 图形的裁剪处理 例5-25 绘制三维曲面图,并进行插值着色处理,裁掉图中x和y都小于0部分。 程序如下:[x,y]=meshgrid(-5:0.1:5);z=cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)/4);surf(x,y,z);shading interp;pause %程序暂停 i=find(x<=0&y<=0);z1=z;z1(i)=NaN;surf(x,y,z1);shading interp;为了展示裁剪效果,第一个曲面绘制完成后暂停,然后显示裁剪后的曲面。 六。图像处理 与动画制作6.1 图像处理 1.imread和imwrite函数 imread和imwrite函数分别用于将图像文件 读入MATLAB工作空间,以及将图像数据和色图数据一起写入一定格式的图像文件。MATLAB支持多种图像文件格式,如.bmp、.jpg、.jpeg、.tif等。 2.image和imagesc函数 这两个函数用于图像显示。为了保证图像的显示效果,一般还应使用colormap函数设置图像色图。 例1-26 有一图像文件flower.jpg,在图形窗口显示该图像。 程序如下:[x,cmap]=imread('flower.jpg'); %读取图像的数据阵和色图阵 image(x);colormap(cmap);axis image off %保持宽高比并取消坐标轴 6.2 动画制作 MATLAB提供getframe、moviein和movie函数进行动画制作。 1.getframe函数 getframe函数可截取一幅画面信息(称为动画中的一帧),一幅画面信息形成一个很大的列向量。显然,保存 n幅图面就需一个大矩阵。 2.moviein函数 moviein(n)函数用来建立一个足够大的n列矩阵。该矩阵用来保存n幅画面的数据,以备播放。之所以要事先建立一个大矩阵,是为了提高程序运行 速度。 3.movie函数 movie(m,n)函数播放由矩阵m所定义的画面n次,缺省时播放一次。 例1-27 绘制了peaks函数曲面并且将它绕z轴旋转。 程序如下[X,Y,Z]=peaks(30); surf(X,Y,Z)axis([-3,3,-3,3,-10,10])axis off;shading interp;colormap(hot);m=moviein(20); %建立一个20列大矩阵 for i=1:20view(-37.5+24*(i-1),30) %改变视点 m(:,i)=getframe; %将图形保存到m矩阵 end movie(m,2); %播放画面2次
④ MATLAB7.8.0中绘制三维图形的函数是哪个
mesh和surf
§4.2 三维作图
§4.2.1 mesh(Z)语句
mesh(Z)语句可以给出矩阵Z元素的三维消隐图,网络表面由Z坐标点定义,与前面叙述的x-y平面的线格相同,图形由邻近的点连接而成.它可用来显示用其它方式难以输出的包含大量数据的大型矩阵,也可用来绘制Z变量函数.
显示两变量的函数Z=f(x,y),第一步需产生特定的行和列的x-y矩阵.然后计算函数在各网格点上的值.最后用mesh函数输出.
下面我们绘制sin(r)/r函数的图形.建立图形用以下方法:
x=-8:.5:8;
y=x';
x=ones(size(y))*x;
y=y*ones(size(y))';
R=sqrt(x.^2+y.^2)+eps;
z=sin(R)./R;
mesh(z) %% 试运行 mesh(x,y,z),看看与mesh(z)有什么不同之处?
各语句的意义是:首先建立行向量x,列向量y;然后按向量的长度建立1-矩阵;用向量乘以产生的1-矩阵,生成网格矩阵,它们的值对应于x-y坐标平面;接下来计算各网格点的半径;最后计算函数值矩阵Z.用mesh函数即可以得到图形.
图4.2.1三维消隐图
第一条语句x的赋值为定义域,在其上估计函数;第三条语句建立一个重复行的x矩阵,第四条语句产生y的响应,第五条语句产生矩阵R(其元素为各网格点到原点的距离).用mesh方法结果如上.
另外,上述命令系列中的前4行可用以下一条命令替代:
[x, y]=meshgrid(-8:0.5:8)
§4.2.2与mesh相关的几个函数
(1) meshc与函数mesh的调用方式相同,只是该函数在mesh的基础上又增加了绘制相应等高线的功能.下面来看一个meshc的例子:
[x,y]=meshgrid([-4:.5:4]);
z=sqrt(x.^2+y.^2);
meshc(z) %% 试运行 meshc(x,y,z),看看与meshc(z)有什么不同之处?
我们可以得到图形:
图4.2.2.1 meshc 图
地面上的圆圈就是上面图形的等高线.
(2) 函数meshz与mesh的调用方式也相同,不同的是该函数在mesh函数的作用之上增加了屏蔽作用,即增加了边界面屏蔽.例如:
[x,y]=meshgrid([-4:.5:4]);
z=sqrt(x.^2+y.^2);
meshz(z) %% 试运行 meshz(x,y,z),看看与meshz(z)有什么不同之处?
我们得到图形:
图4.2.2.2 meshz 图
§4.2.3 其它的几个三维绘图函数
(1) 在Matlab中有一个专门绘制圆球体的函数sphere,其调用格式如下:
[x,y,z]=sphere(n)
此函数生成三个(n+1)×(n+1)阶的矩阵,再利用函数surf(x,y,z)可生成单位球面.
[x,y,z]=sphere 此形式使用了默认值n=20
sphere(n) 只绘制球面图,不返回值.
运行下面程序:
sphere(30);
axis square;
我们得到球体图形:
图4.2.3.1 球面图
若只输入sphere画图,则是默认了n=20的情况.
(2) surf函数也是Matlab中常用的三维绘图函数.其调用格式如下:
surf(x,y,z,c)
输入参数的设置与mesh相同,不同的是mesh函数绘制的是一网格图,而surf绘制的是着色的三维表面.Matlab语言对表面进行着色的方法是,在得到相应网格后,对每一网格依据该网格所代表的节点的色值(由变量c控制),来定义这一网格的颜色.若不输入c,则默认为c=z.
我们看下面的例子:
%绘制地球表面的气温分布示意图.
[a,b,c]=sphere(40);
t=abs(c); %求绝对值
surf(a,b,c,t);
axis equal
colormap('hot')
我们可以得到图形如下:
图4.2.3.2 等温线示意图
§4.2.4图形的控制与修饰
(1) 坐标轴的控制函数axis,调用格式如下:
axis([xmin,xmax,ymin,ymax,zmin,zmax])
用此命令可以控制坐标轴的范围.
与axis相关的几条常用命令还有:
axis auto 自动模式,使得图形的坐标范围满足图中一切图元素
axis equal 严格控制各坐标的分度使其相等
axis square 使绘图区为正方形
axis on 恢复对坐标轴的一切设置
axis off 取消对坐标轴的一切设置
axis manual 以当前的坐标限制图形的绘制
(2)grid on 在图形中绘制坐标网格.
grid off 取消坐标网格.
(3)xlabel, ylabel, zlabel分别为x轴, y轴, z轴添加标注.title为图形添加标题.
以上函数的调用格式大同小异,我们以xlabel为例进行介绍:
xlabel('标注文本','属性1','属性值1','属性2','属性值2',…)
这里的属性是标注文本的属性,包括字体大小、字体名、字体粗细等.
例如:
[x, y]=meshgrid(-4:.2:4);
R=sqrt(x.^2+y.^2);
z=-cos(R);
mesh(x,y,z)
xlabel('x\in[-4,4]','fontweight','bold');
ylabel('y\in[-4,4]','fontweight','bold');
zlabel('z=-cos(sqrt(x^2+y^2))','fontweight','bold');
title('旋转曲面','fontsize',15,'fontweight','bold','fontname','隶书');
⑤ matlab中的meshgrid命令怎么用
下面以墨西哥草帽为例,说明meshgrid命令使用方法。
xi=-10:0.51:10;yi=-10:0.51:10;
[x,y]=meshgrid(xi,yi);
z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2);
mesh(x,y,z);
⑥ 【Matlab的图形绘制和频谱计算】+和+【基本信号的表达式】
matlab只能做离散数值计算(符号计算只是小部分),所以绘制上述信号图形必须抽样离散化(指定时长,抽样频率等),时域图形可逐点画出,频域要做离散FFT后画出。
根据那奎斯特抽样定理,抽样频率要高于信号中最高频率的两倍,才不会失真,因此频谱中(fs/2,fs)为无用谱,故频域信号的定义域向量与值域向量都应该做减半处理
以sin(x)为例:
clearall; %
N=1024; %信号的抽样点数
fs=10; %抽样频率,高于信号中最高频率的2倍
t=(0:N-1)/fs;
f=(0:N-1)*fs/N;
x=sin(2*pi.*t);%待处理信号sin(x)=sin(2πft),f=1hz
y=abs(fft(x)); %FFT后求模
f=f(1:N/2); %减半
y=y(1:N/2); %减半
subplot(2,1,1) %画图
plot(t(1:2*fs),x(1:2*fs));%只画2个周期
subplot(2,1,2) %画图
plot(f,y);
⑦ matlab在高数中的应用
解方程,矩阵操作,各种函数求值,微积分,基本你能想到的数学运算都能在matlab中找到相应的解决办法!
1 概述安装介绍
略
2 矩阵和数组
2.1 创建特殊矩阵函数
Compan 伴随矩阵
Diag 对角矩阵
Eye 单位矩阵
Gallery 测试矩阵
Hadamard hadamard矩阵
Hilb hilb矩阵
Invhilb invhilb矩阵
Magic 魔方矩阵
Ones 全一矩阵
Rand 均匀分布随机矩阵
Randn 正态分布随机矩阵
Rosser 经典对称特征测试矩阵
Wilkinson wilkinson特征值测试矩阵
Zeros 全零矩阵
注:diag(A,n)以向量A为主对角线为基准偏移n个位置
2.2 矩阵连接
水平 c=[a,b]或者c=[a b]
垂直 c=[a;b]
连接函数
Cat 指定方向
Cat(1,a,b)水平
Cat(2,a。
b)垂直
Horzcat 水平方向
Vertcat 垂直方向
Repmat 对现有矩阵复制粘贴
Blkdiag 以对角阵方式重组
2.3 改变矩阵形状
Reshape 制定行列重排
Rot90 逆时针90
Filplr 垂直方向为轴旋转180
Flipud 水平方向为轴旋转180
Flipdim 指定方向为轴翻转矩阵
2.4 向量生成函数
Linspace(a,b)首尾为a。
b的100个数
Linspace(a,b,n)
Logspace(a,b)以10为底
Logspace(a。
b,n)
Logspace(a,pi)
2.5 矩阵信息的获取
Isempty 判断为空
Isscalar 判断为标量
Isvector 判断向量
Issparse 判断稀疏矩阵
Isa 判断指定数据类型
Iscell 判断元胞数组类型
Iscellstr 元胞字符串数组类型
Isfloat 判断浮点数
Isinteger 判断整形类型
Islogical 判断逻辑类型
Isnumeric 判断数值类型
Isreal 判断实数类型
Isstruct 判断结构体类型
Length 最长维长度
Ndims 维数
Numel 元素个数
Size 指定维长度
2.6 高维矩阵
Squeeze 删除大小为1的维
Flipdim(a,n) 翻转,第n维为基准
Shiftdim(a,n) 移动数组,前n维到右边
Permute(a,order)按order向量重排
3 数据类型
3.1 数值类型
复数:i,j等价
无穷:inf,-inf
非数:NaN
0*inf=nan
Isnan判断非数
3.2 逻辑类型
Ture/false 设置真假
Logical 数值转换成逻辑
&,|,~。
xor,any。
all 逻辑运算符
&&,|| 短路式运算符
==。
~=,<,>,<=,>= 关系运算符
Strcmp,strncmp,strcmpi,strncmpi字符串比较
3.3 字符与字符串
创建可用到strcat
二维字符数组创建时每行字符列相同
Deblank 提取字符串。
删除末尾空格
比较函数:Strcmp,strncmp,strcmpi,strncmpi加n的是比较前n个字符,加i的不分大小写,返回0/1
3.4 元胞
创建:直接赋值方式;cell函数
包含的元素不用()而用{}
Celldisp 显示具体内容
Cellstr 用于字符串元胞数组
Length 查询元胞长度
Iscell 判断是否为元胞类型
Char 元胞数组到字符数组转变
3.5 构架
构架是带有域的数组
创建:直接创建;struct函数
4 MATLAB数值运算
4.1 矩阵基本运算
加减简单
乘法(K*M)*(M*N)才可行
除法分为左除和右除,值不同
求幂 要求方阵
按位运算 .* ./ .\ .^
4.2 关系运算和逻辑运算
关系运算符:> < >= <= == ~=
逻辑运算符:& | && || ~
异或:xor
数位逻辑与:bitand(a,b)
数位逻辑或:bitor(a,b)
数位逻辑非:bitcmp(a,n)
数位异或:bitxor(a。
b)
关系逻辑函数:
Xor(a。
b)异或
Any(a)或
All(a)与
Isaqual(a,b)对应相等为1
Ismember(a。
b)a元素属于b相应位置为1
4.3 运算符优先级
略
5 绘图
5.1 相关函数
管理类:figure、subplot、zoom、hold、view、rotate
生成类:plot、line、stem、polar、fill、plotyy、plot3、surf、surfc、mesh、meshz、contour、contour3、contourf、waterfall、cylinder
注释和特性类:xlabel、ylabel、zlabel、text、text3、title、legend、box、set、grid、axes、axes equal、axes off、colorbar、clabel、colormap
5.2 基本绘图指令
Polar 极坐标中画圆
Polar(t’,r1)若在一个图中画几个图形用[]分别括起来,如:
[t’ t’],[r1 r2]
线形设计:
线形:- -. -- :
颜色:r g b c m y k w
点标记: o * . x s d h p > < ^ v
多期货考试资料图绘制:subplot
双轴绘图:plotyy
5.3 图形标注
函数:title、xlabel、ylabel、zlabel、legend(图例)、colorbar(色彩条)、annotation(标注元素)
对齐属性值:
HorizontalAlignment(水平):left、center、right
VerticalAlignment(垂直):middle、top、cap、basline、battom
封闭区间填充:fill(a,b,‘c’)在使用之前使用hold命令
5.4 模式化绘图
柱状图:bar或barh其模式有mode、stacked(堆在一个柱中)加引号
面积图:area
饼图:pie
直方图:hist(data,n) n:分割区间数
玫瑰图:rose(data,n)
离散数据绘图:stem
阶梯图:stairs
等高线图:contourf(填充式)
contour(一般式)
标注:colorbar填充,clable普通
罗盘图:compass
羽毛图:feather
向量场:quiver
函数绘图:涉及函数句柄
flplot(fun,limits)
ezplot(fun,[xmin,xmax,ymin,ymax]
ezpolar(fun,[a,b])
ezcontour(fun)
ezcontourf(fun)
5.5 三维绘图
(1) 数据准备
(2) 绘图区创建
(3) 绘图
(4) 设置视角
(5) 设置颜色表
(6) 设置光照效果
(7) 设置坐标轴和比例
(8) 标注图形
(9) 保存打印或导出
Plot3:曲线
Mesh(X,Y,Z):曲面
Meshc在mesh的基础画等高线
Meshz在mesh的基础上垂直连XY面
Surf(X,Y,Z)
Surfc等高线
Surfl(X,Y,Z,S)加光照效果
曲线旋转成面:
[X,Y,Z]=cylinder(R,N) N:线的条数
柱状图:bar3(data,‘mode’)
饼状图:pie3
离散点图:scater3和stem3
向量场图:quiver3(X,Y,Z,U,V,W,S)其中S为缩放比例
等高线图:contour3(X,Y,Z,n)
其中n为等高线划分的条数
函数绘图:
eplot3(funx,funy,funz,[tmin,tmax])指定范围的三维曲线
emesh(fun,domain)网线曲面
ezmeshc(fun,domain)带等高线
ezsurf(fun,domain)填充曲面
ezsurfc(fun,domain)带等高线
其中domain=[xmin,xmax,ymin,ymax]
显示控制:
Hidden:设置显示挡住的实体图形
Axes:坐标轴比例设置
View:设置视角
着色:加一指示颜色的数组
Colormap:颜色索引范围的设定
Shading:过渡设置。
其参数有faceted,flat和interp
Light:光照设置,参数有color,style(infinit和local)和position
Lighting:flat,gouraud,phong,off
Material:质感设置,其参数有shiny,ll,(光泽)metal(金属)
6 图形对象和句柄
6.1 Matlab图形对象
最上层:root
图形窗口:figure,包括轴对象(Axes)和用户界面对象(UI)等
UI:如按钮、菜单、工具栏等
Axes:内核对象(core objects)、图形对象(plot objects)、组对象(group objects)、注释对象(annotation objects)
内核对象:line,patch,text。
rectangular,surface,image,
light等
绘图对象:内核的预定义组合
组对象:允许用户将axes的数个子对象看成一个整体,hggroup和hgtransform两种
注释对象:箭头、文本、文本框、线、矩形等。Plot edit和insert menu添加。
也可用函数annotation
图形对象属性:
Busyaction:控制回调函数中断方式
ButtonDownFcn:单击按钮的回调函数
Children:所有子对象的句柄列表
Parent:父对象句柄
CreateFcn:创建对象时执行的回调
DeleteFcn:删除对象时执行的回调
HitTest:单击时能否成为当前对象
Interruptible:回调函数是否被中断
Selected:对象是否被选中
SelectionHighlight:选中是否高亮
Tag:对象标签
Type:对象类型
UserData:交互数据
Visible:对象是否可见
6.2 MATLAB对象句柄
对象句柄:ID标示的机制,由MATLAB系统分配、唯一的标识对象的double型数值
寻访:对象句柄唯一对应
指定函数句柄:@和str2func
Get:获取当前窗口、轴和对象
Gcf:返回当前窗口句柄
Gca:返回当前轴句柄
Gco:返回当前对象句柄
还可以用set函数来设定
Findobj:以属性值为索引搜索
Copyobj:MATLAB对象的复制
Delete:对象的删除
6.3 设置和查询对象属性
Set(object_handle,’PropertyName’,’NewPropertyValue’)对象属性的设置
Returned_value=Get(object_handle,’propertyName’)属性查询
默认属性的设置加前缀default
6.4 图形窗口对象(Figure)
位置属性:Position
单位属性:unit,默认pixels(像素)
色彩属性:
Color:背景色,RGB
Colormap:色彩映像表,(n*3)RGB
FixedColors:线、字符色,RGB
MinColormap:最少色彩,标量
ShareColors:色彩资源能否共享,[{on}|off]
Dithermap:混合色图,(n*3)RGB
DithermapMode:混合模式,[auto{manual}]
绘制窗口的类型:
BackingStore,DoubleBuffer,Renderer和RendererMode
预定义光标形状(15种)
自定义光标属性:
Pointer:custom表示自定义
PointerShapeCData:1黑2白NaN透明
PointerShapeHotSpot:光标热点
6.5 轴对象(Axes)
位置属性Position和单位属性Units
单轴对象常用控制属性:
XLim,YLim,ZLim:确定轴范围
XLimMode…:轴范围模式
XTick…:确定轴刻度位置
XTickMode…:刻度位置模式
XTickLabel…:刻度标记
XTickLabelMode…:刻度标记模
XDir…:轴方向
多轴重叠:subplot或者直接在图形窗口另行创建一个专门用于容纳注释对象的坐标轴
自动模式属性(照相机属性):
CameraPosition:相机位置[x,y,z]
CameraPositionMode:位置取值模式
CameraTarget:目标[x,y,z]
CameraTargetMode:目标模式
CameraUpVector:正位向量
CameraUpVectorMode:正位向量模式
CameraViewAngle:视角【0 180】
CameraViewAngleMode:视角取值模式
Projection:投影方式
6.6 图形输出控制
NextPlot属性值:new、add、replace、 replacechildren
通过hold on和hold off可以设定图形窗口对象和轴对象的属性设置为add和replace。
7 程序设计
7.1 M文件
M文件就是介绍上海的幻灯片一系列相关代码组成的一个扩展名为.m的文件。分为脚本文件和函数文件两类。
脚本文件不自带参数;
函数文件以function…开始
函数工作区间:Function workspace
M文件结构:函数声明行、H1行、帮助文本、编写和修改注释、函数体
P-码文件:为M文件生成的内部伪代码
P-码文件的预生成函数为Pcode,格式:pcode Func_name当前路径
Pcode Func_name-inplace M文件目录
对P-码文件的操作:
Inmem:列出所有内存中P-码文件名
Clear Func_name:清楚某个p-码文件
Clear function:清楚所有p-码文件
7.2 函数
分为M-函数文件和匿名函数
一个M文件只能有1个主函数。
多个子函数
主函数还分为:私用函数和重载函数
嵌套函数:多平行和多层嵌套
7.3 变量
变量名区分大小写;
最多包含63个字符;
必须以字母开始起名。
后可为字母、下划线;
不允许出现标点符号。
17个系统关键字:break、case、catch、continue、else、elseif、end、for、function、globle、if、otherwise、persistent、return、switch、try、while
可在命令窗口输入iskeyword显示。
特殊变量:ans,beep,pi,eps,inf,NaN(nan,i(j),nargin(输入个数),nargout(输出个数),realmin,realmax,bitmax,varargin(可变的函数输入参数个数),varargout
分为局部变量、全局变量(globle)、永久变量(persistent)
Inputname(n):第n个输入变量的调用名
7.4 程序结构
分为顺序结构、循环结构(for或while)和分支结构(if或switch)
7.5 程序控制语句
结束循环:continue、break、return
Continue和break:结束本次循环
Warning:错误警告语句
Error和errordlg(显示对话框)
Try…catch:try中有错是执行catch语句
Input和keyboard:输入控制语句
8 程序调试、优化和出错处理
8.1 调试
调试(debug):去除bug
Bug:语法错误、逻辑错误、异常
Debug函数:
Dbstop:设置断点
Dbclear:清除断点
Dbcout:重新执行
Dbdown/dbup:变更当前工作空间
Dbmex:MEX文件调试
Dbstack:列出函数调用关系
Dbstatus:列出所有断点
Dbstep:单步或多步执行
Dbtype:打印M文件
Dbquit:退出调试模式
Debug辅助函数:
Echo:在命令窗口显示当前执行代码
Disp:显示变量
Sprintf/fprintf:指定格式显示文本
Whos:列出工作空间中所有变量
Size:显示变量的大小
Keyboard:中断程序执行,等待输入
Return:结束函数执行
Warning:引发、显示指定的警告
Error:引发、显示指定的错误
Laster:返回最近产生的错误消息
Lasterror:错误消息及相关信息
Lastwarn:返回最近产生的警告
8.2 性能优化
码表:tic——toc时间测试
效率优化技术:
代码向量化
预分配足够大的数组
对不可避免且耗时很大的循环尝试在MEX文件内实现
尽量避免更改变量的数据类型或维数
尽量避免实数和复数之间的相互赋值
尽量采用实数运算
合理使用逻辑运算
尽量采用函数而不是脚本文件
尽量使用load、save而不是IO函数
内存优化技术:whos,clear,save,load
预分配足够大的数组
尽量在函数开始时创建变量
利用repmat增加数组的空间大小
对大部分数据为0的矩阵变为稀疏矩阵
若要保存大量数据采用数组构架而非构架数组
及时地清除占用内存很大的临时变量
尽量地重用内存,而非开辟新内存
8.3 出错处理
Try…catch查询语句