MATLAB总结 隐函数、符号函数作图由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“matlab符号函数的作图”。
I.隐函数f(x,y)=0, f(x(t),y(t),z(t))=0;z=f(x,y)ezplot, ezplot3, ezcontour, conctourf, ezpolar, ezmesh, ezmeshc, ezsurf, ezsurfc 1.ezplot:画符号函数图形
ezplot(f):对于显式函数f=f(x),在默认的范围[-pi
ezplot(f,[min,max]):在指定的范围[min
ezplot(f,[xmin xmax],fing):在指定标号为fign的窗口中、指定范围[xmin xmax]内画函数f=f(x)的图形。ezplot(f,[xmin,xmax,ymin,ymax]):在平面矩形区域[xmin
ezplot(x,y,[tmin,tmax)]:在指定范围[tmin> syms x y >> ezplot(2*x^4-y^9)
2.ezplot3:三维曲线图
ezplot3(x,y,z):在默认的范围0
ezplot3(x,y,z,[tmin,tmax]):在默认的范围tmin> syms t >> ezplot3(t*sin(t),t*cos(t),t,[0,20*pi])
此外,三维曲线的视角可以通过程序命令来控制,也可以手动设置。
3.ezcontour:画符号函数的等高线图
ezcounter(f):画出二元符号函数f=f(x,y)的等高线图。函数f将被显示在默认的平面区域[-2pi
ezcontour(f,domain):在指定的定义域domain内画出二元函数f(x,y),参量domain可以是四维向量[xmin,xmax,ymin,ymax]或二维向量[min,max](其中显示区域为min
ezcontour(…,n):用指定n*n个栅格点(对定义域的一种划分),在默认(若没有指定)的区域内画出函数f的图形。n的默认值为60.例如: >> syms x y >> f=(1-x)^2*exp(-(x^2)-(y+1)^2)-5*(x/5-x^3-y^5)*sin(-x^2-y^2)-1/3*exp(-(x+1)^2-y^2);>> ezcontour(f,[-3,3],49)
4.contourf:用不同颜色填充的等高线图
ezcontourf(f):画二元函数f=f(x)的等高线图,且在不同的等高线之间自动用不同的颜色进行填充。函数f兼备现实与默认的平面区域[-2pi
ezcontourf(f,domain):在指定的定义域domain内画出二元函数f(x,y)的等高线图,且在不同的等高线之间自动用不同的颜色进行填充。定义域domain可以是四维向量[xmin,xmax,ymin,ymax]或者二维向量[min,max])(其中显示区域为:min
ezcontourf(……,n)用指定的n*n个栅格点,在默认(若没有指定)的区域内画出函数f的等高线,且在不同的等高线之间自动用不同的颜色进行填充。n的默认值是60.例如: >> syms x y >> f=(1-x)^2*exp(-(x^2)-(y+1)^2)-5*(x/5-x^3-y^5)*sin(-x^2-y^2)-1/3*exp(-(x+1)^2-y^2);>> ezcontourf(f,[-3,3],60)
5.ezpolar:画极坐标函数图象
ezpolar(f):在默认的范围0> syms t >> ezpolar(1+cos(5*t))
6.ezmesh:符号函数的三维网格图
ezmesh(f):画出二元符号函数f=f(x,y)的网格图。函数f将显示于默认的平面区域[-2pi
ezmesh(x,y,z):在默认的矩形定义域范围[-2pi
ezmesh(x,y,z,[smin,smax,tmin,tmax]):在指定的矩形定义域范围[smin
ezmesh(x,y,z,[min,max]):用指定的矩形定义域[min> syms x y >> ezmesh(x*sin(-x^2-y^2),40,'circ')
>> colormap([0 0 1])%获取当前图色
7.ezmeshc:同时画曲面网格图和等高线图
ezmeshc(f):画出二元数学符号函数z=f(x,y)的网格图形,同时在xy平面上显示等高线图。函数f将被显示于默认的平面区域[-2pi
ezmeshc(f,domian):在指定的定义域domain内画出二元数学符号函数z=f(x,y)的网格图及其等高线图,domain可以是四维向量[xmin,xmax,ymin,ymax]或者二维向量[min,max])(其中显示区域为:min
ezmeshc(x,y,z,[smin,smax,tmin,tmax]):在指定的矩形定义域范围[smin
ezmeshc(f,……,n):用指定n*n个栅格点,在默认(若没有指定)的区域内画出函数f的网格图形及其等高线图。n的默认值是60.ezmeshc(…,’circ’):在一圆形区域(圆心位于定义域中心)的范围内画出函数f的网格图形以及其等高线图。例如: >> syms x y >> ezmeshc(x*y/(1+x^2+y^2),[-5,5,-2*pi,2*pi],35)
(颜色使用了colormap函数控制,上面对应的代码是colormap(cool(64)。)8.ezsurf:三维带颜色的曲面图
ezsurf(f): 画出二元数学符号函数z=f(x,y)的曲面图形。函数f将显示于默认的平面区域[-2pi
ezsurf(f,domian):在指定的定义域domain内画出二元数学符号函数z=f(x,y)的曲面图形,domain可以是四维向量[xmin,xmax,ymin,ymax]或者二维向量[min,max])(其中显示区域为:min
ezsurf(x,y,z):在默认的矩形定义域范围[-2pi
ezsurf(x,y,z,[smin,smax,tmin,tmax]):在指定的矩形定义域范围[smin
ezsurf(f,…,n):用指定n*n个栅格点,在默认(若没有指定)的区域内画出函数f的图形。n的默认值是60.ezsurf(…,’circ’):在一圆形区域(圆心位于定义域中心)的范围内画出函数f的图形。例如: >> syms x y >> ezsurf(real(atan(x+i*y)))
9.ezsurfc:同时画曲面图与等高线图
>> syms x y >> ezsurfc(x*y/(1+x^2+y^2),[-5,5,-2*pi,2*pi],35,'circ')
II.Matlab画三维隐函数曲面
implicitmesh, implicitmesh 利用ezplot甚至可以直接绘制隐函数曲线F(x,y)=0而无需将其写成y=f(x)的形式。然而十分可惜的是与之对应的ezsurf和ezmesh却对隐函数曲面F(x,y,z)=0的绘制无能为力。那么matlab究竟有没有用来绘制诸如F(x,y,z)=0的命令呢?答案毫无疑问是肯定的。事实上利用matlab的等值面函数isosurface就可以轻松搞定。关于isosurface的具体用法大家可以自己参看help。下面两个函数就是我利用isosurface编写的通用隐函数曲面绘制命令。
1.隐函数曲面网格图函数implicitmesh function h=implicitmesh(f,xlimit,ylimit,zlimit,gd)%implicitmesh(f,span,gd):画隐函数曲面f(x,y,z)=0的网格图, % 各坐标范围均限定在span=[lb,ub], % 网格数为gd,默认为25 %implicitmesh(f,xspan,yspan,zspan,gd):画隐函数曲面f(x,y,z)=0, % 各坐标范围分别限定在xspan,yspan,zspan %h=implicitmesh(...):画隐函数曲面并输出句柄 %例一:
%implicitmesh(inline('x.*y+z.^2'),[-5 5])%注意*^一定要设成点运算 %例二:
%f=@(x,y,z)x.^2+y.^2+0*z-1;%注意如果f中不含某个变量一定要加上诸如0*y的项。%implicitmesh(f,[-1 1],10)%例三:
%f=@(x,y,z)(x.^2 +(9/4)*y.^2 + z.^2x.^2.*z.^3-(9/80)*y.^2.*z.^3;%g=@(x,y,z)(sqrt(x.^2+y.^2)-2).^2+z.^2-.09;%implicitmesh(f,[-1.5 1.5],[-.8.8],[-1.5 1.5],50);%hold on%可以添加图形 %h=implicitmesh(g,[-2.3,2.3]);%colormap hsv;set(h,'facecolor','none');%可以设置各种效果 %axis off;axis equal;if nargin==2 ylimit=xlimit;zlimit=xlimit;gd=25;elseif nargin==3 gd=ylimit;ylimit=xlimit;zlimit=xlimit;elseif nargin==4 gd=25;elseif nargin==5 else error('Errorin input arguments')end x=linspace(xlimit(1),xlimit(2),gd);y=linspace(ylimit(1),ylimit(2),gd);z=linspace(zlimit(1),zlimit(2),gd);[x,y,z]=meshgrid(x,y,z);val=f(x,y,z);[f,v]=isosurface(x,y,z,val,0);if isempty(f)warning('There is no graph in the range.');p=[];else newplot;p=patch('Faces',f,'Vertices',v,'CData',v(:,3),'facecolor','w','EdgeColor','flat');isonormals(x,y,z,val,p);view(3);grid on end if nargout==0 else h=p;end 效果图:
2.隐函数曲面表面图函数implicitsurf function h=implicitsurf(f,xlimit,ylimit,zlimit,gd)%implicitsurf(f,span,gd):画隐函数曲面f(x,y,z)=0的网格图, % 各坐标范围均限定在span=[lb,ub], % 网格数为gd,默认为25 %implicitsurf(f,xspan,yspan,zspan,gd):画隐函数曲面f(x,y,z)=0, % 各坐标范围分别限定在xspan,yspan,zspan %h=implicitsurf(...):画隐函数曲面并输出句柄 %例一:
%implicitsurf(inline('x.*y+z.^2'),[-5 5])%注意*^一定要设成点运算 %例二:
%f=@(x,y,z)x.^2+y.^2+0*z-1;%注意如果f中不含某个变量一定要加上诸如0*y的项。%implicitsurf(f,[-1 1],10)%例三:
%f=@(x,y,z)(x.^2 +(9/4)*y.^2 + z.^2x.^2.*z.^3-(9/80)*y.^2.*z.^3;%g=@(x,y,z)(sqrt(x.^2+y.^2)-2).^2+z.^2-.09;%h=implicitsurf(f,[-1.5 1.5],[-.8.8],[-1.5 1.5],50);%set(h,'AmbientStrength',.5);%可以设置各种效果 %hold on%可以添加图形
%h=implicitsurf(g,[-2.3,2.3],[-2.3,2.3],[-.3,.3]);%colormaphsv;set(h,'AmbientStrength',.8,'FaceAlpha',.5);%可以设置各种效果 %axis off;axis equal;shading interp;camlight;lightinggouraud;if nargin==2 ylimit=xlimit;zlimit=xlimit;gd=25;elseif nargin==3 gd=ylimit;ylimit=xlimit;zlimit=xlimit;elseif nargin==4 gd=25;elseif nargin==5 else error('Errorin input arguments')end x=linspace(xlimit(1),xlimit(2),gd);y=linspace(ylimit(1),ylimit(2),gd);z=linspace(zlimit(1),zlimit(2),gd);[x,y,z]=meshgrid(x,y,z);val=f(x,y,z);[f,v]=isosurface(x,y,z,val,0);if isempty(f)warning('There is no graph in the range.');p=[];else newplot;p=patch('Faces',f,'Vertices',v,'CData',v(:,3),'facecolor','flat','EdgeColor','k');isonormals(x,y,z,val,p);view(3);grid on end if nargout==0 else h=p;end 效果图:
III.关于ezplot作图之后数据提取的问题
clear;clc figure
h=ezplot('x*y',[-2,2]);x1=get(h(1),'XData');y1=get(h(1),'YData');x2=get(h(2),'XData');y2=get(h(2),'YData');figure plot(x1,y1);hold on plot(x2,y2);
MATLAB函数总结Matlab有没有求矩阵行数/列数/维数的函数? ndims(A)返回A的维数size(A)返回A各个维的最大元素个数 length(A)返回max(size(A)) [m,n]=size(A)如果A是二维数组,......
Subplot(a,b,c) 图像位置函数,a表示分成的行数,b表示当前行的列数,c为位置序号。 Plot(x1,y1,’s1’,x2,y2,’s2’,……) 二维绘图函数,绘制一般曲线,参数x表示x轴量,y表示y轴量,s为......
《数字图像处理》冈萨雷斯,Matlab函数汇总 .图像显示colorbar显示彩条getimage由坐标轴得到图像数据 ice(DIPUM) 交互彩色编辑image 创建和显示图像对象 imagesc缩放数据并显示......
MATLAB一些重要函数与符号用法总结(冒号,取整函数,Cell用法)
冒 号1)a:b 表示[a,a+1,……,b] 1.>> A=1:5 2.A = 3. 1 2 3 4 5 2)如果b-a不是整数的话,则向量的最后一位数是n+a,且n=fix(b-a) 1.>> A=1.2:4.9 2.A = 3. 1.2000 2.2000 3.2000 4.......
常用函数sum(数值1,数值2……)求和average(数值1,数值2……)求平均值max(数值1,数值2……)求最大值min(数值1,数值2……)求最小值count(数值1,数值2……)计数注意:count只能统计数......