文档库 最新最全的文档下载
当前位置:文档库 › matlab如何自定义colorbar

matlab如何自定义colorbar

matlab如何自定义colorbar
matlab如何自定义colorbar

matlab画平面分布图时colorbar的设置是非常重要的,好的colorbar不仅使图像更美观,而且能够使人更容易捕捉图上传递的信息。用过matlab的同学都知道matlab默认的colormap是jet, 也就是你画完图后输入“colorbar”它所显示出来的颜色。此外,matlab还自带了很多colormap, 如hsv, autumn, bone, colorcube等等。我们直接在命令窗口输入例如"colormap(hsv)" 就可以是平面图的颜色显示相应的colormap。

下面教大家如何自定义自己想要的colormap,方法十分简单。

以中国海的海面温度图为例:

这是一张有m_pcolor画出来的图,之后colormap是matlab默认的jet(即直接输入命令‘colorbar’显示的colormap)。

如果我们这是在命令窗口输入‘colormap(hsv)’,则会变成下面这张图:

(请忽视图标题,截图很麻烦,见谅)

如果我们这是想定义一种新的colormap,颜色从赤,橙,白,蓝,紫依次传递的话(如下图),应该怎么做?

这就要用到matlab的colormap Editor了。如下图:点击figrue窗口的Edit-colormap

出现colormap Editor窗口:

我们可以利用这个窗口直接设置自定义colormap。

colormap Editor中有是一个色标尺,色标尺下方有一些滑块,其中两端的矩形滑块是固定的,不能删除;而中间的矩形+三角形滑块是可以添加,删除,或滑动的。在色标尺低端单击鼠标左键添加,选择某块滑块按Deletei键删除,鼠标按住某个滑块可左右滑动。

为了达到上述所说的“颜色从赤,橙,白,蓝,紫依次传递”的效果,我们先把中间的两个矩形+三角形滑块删除,如下图:

由于上一张图colormap的两端都是红色,所以中间两块滑块删除后整个colormap 只剩下红色一种颜色了。

我们先从白色添加起,标尺上一共有64个格,为了左右平衡,我们先挑中间两格添加白色,具体步骤为:

1、点击标尺中间色格的下方,出现滑块(如下图)。

2、双击出现的滑块,出现颜色选择窗口,选择白色(如下图)。

选完后图像就变成下面这样了:

相同的方法选择“赤,橙,蓝,紫”,如下图:

但这时我们发现colormap并不能如我们所愿,因为中间出现了黄色跟绿色。我们注意在colormap Editor中有个Interpolating colorspace选项,由于刚刚我们是以colormap(hsv)为根本的,所以这里的颜色插值方式是hsv的,我们这是应该选择RGB。如下图:

好了,大功告成。

下面就是要保存自己设置的colormap以便今后画图时可以直接用了。

在命令传控输入:

mycolor=colormap;%mycolor名称任意

save mycolor mycolor;

下次画图时,只要先load mycolor; 再输入colormap(mycolor) 就可以直接用这个colorbar了。

还有一种colorbar不是渐变的,如下图:

这种colorbar的设置方式也大同小异。图中colorbar有5中颜色,那么我们就在colormap Editor中将头五种颜色设成图中颜色,再将其余颜色设成白色(不一定白色,其它颜色也可,主要是为了方便辨认)

这是我们在命令窗口中输入“colormap”,就会出现一个64*3的数组。

注意的数组前五行就代表上面5种颜色,其余[1 1 1]代表白色。这是只要把前5行复制出来,写入新数组中。

再“save mycolor5 mycolor1”保存起来。这是在命令窗口输入“colormap(mycolor5)”就出现下图了:

大功告成!!!

第一次写matlab教学,有点啰嗦,希望能够帮到大家!!

matlab中的自定义函数与调用

Matlab自定义函数 1、函数文件+调用命令文件:需单独定义一个自定义函数的M文件; 2、函数文件+子函数:定义一个具有多个自定义函数的M文件; 3、Inline:无需M文件,直接定义; 4、Syms+subs:无需M文件,直接定义; 5、字符串+subs:无需M文件,直接定义. 6、匿名函数 7、直接通过@符号定义. 1、函数文件+调用函数文件:定义多个M文件: %调用函数文件:myfile.m clear clc for t=1:10 y=mylfg(t);%调用函数时要注意实参与形参的匹配! fprintf(‘%4d^(1/3)=%6.4f\n’,t,y); end %自定义函数文件:mylfg.m function y=mylfg(x)%注意:函数名(mylfg)必须与文件名(mylfg.m)一致 Y=x^(1/3); 注:这种方法要求自定义函数必须单独写一个M文件,不能与调用的命令文件写在同一个M文件中。 2、函数文件+子函数:定义一个具有多个子函数的M文件 %函数文件:funtry2.m function[]=funtry2()%可以无自变量()或无因变量[] for t=1:10 y=lfg2(t); fprintf('%4d^(1/3)=%6.4f\n',t,y); end function y=lfg2(x)%%子函数 y=x^(1/3);

%注:自定义函数文件funtry2.m中可以定义多个子函数function。子函数lfg2只能被主函数和主函数中的其他子函数调用。 3、Inline:无需M文件,直接定义; %inline命令用来定义一个内联函数:f=inline(‘函数表达式’,‘变量1’,’变量2’,……)。 调用方式:y=f(数值列表)%注意:代入的数值列表顺序应与inline()定义的变量名顺序一致。 例如: f=inline(‘x^2+y’,’x’,’y’); z=f(2,3) Ans=7 注:这种函数定义方式是将它作为一个内部函数调用。特点是,它是基于Matlab的数值运算内核的,所以它的运算速度较快,程序效率更高。缺点是,该方法只能对数值进行代入,不支持符号代入,且对定义后的函数不能进行求导等符号运算。 内联函数定义方式是将f作为一个内部函数调用。其特点是:调用方式最接近于我们平时对函数的定义,使程序更具可读性。同时由于它是基于Matlab的数值计算内核的,所以它的运算速度较快,程序更有效率。 这种定义方式的缺点: 定义一个内联函数用去的内存空间比相同条件下其他的方法要大得多。 该方法只能对数值进行代入,不支持符号代入,并且对于定义后的函数不能进行求导等符号运算。 例:通过命令clear清除工作空间的所有变量后,执行如下指令 Clear Clc f=’x^2’; Syms x g; g=x^2; h=inline(‘x^2’,’x’); whos 4、Syms+subs:无需M文件,直接定义; 用syms定义一个符号表达式,用subs调用: Syms f x%定义符号 f=1/(1+x^2);%定义符号表达式也是符号

MATLAB绘图功能大全

MATLAB绘图功能大全-CAL-FENGHAI.-(YICAI)-Company One 1

Matlab绘图 强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基木参数就能得到所需图形,这类函数称为高层绘图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。 本章介绍绘制二维和三维图形的高层绘图函数以及其他图形控制函数的使用方法,在此基础上,再介绍可以操作和控制各种图形对象的低层绘图操作。 一、二维绘图 二维图形是将平而坐标上的数据点连接起来的平面图形。可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等。二维图形的绘制是其他绘图操作的基础。 (一)绘制二维曲线的基木函数 在Matlab中,最基本而且应用最为广泛的绘图函数为plot,利用它可以在二维平面上绘制出不同的曲线。 1.plot函数的基木用法 plot函数用于绘制二维平面上的线性坐标曲线图,要提供一组x 坐标和对应的y坐标,可以绘制分别以x和y为横、纵坐标的二维曲线。plot函数的应用格式

plot(x,y)其中x,y为长度相同的向量,存储x坐标和y坐标。 例52在[0,2pi]区间,绘制曲线 程序如下:在命令窗口中输入以下命令? ? x=0:pi/100:2*pi; ? y=2*exp*x).*sin(2*pi*x); ? plot(x,y) 程序执行后,打开一个图形窗口,在其中绘制出如下曲线 注意:指数函数和正弦函数之间要用点乘运算,因为二者是向量。 例52绘制曲线 这是以参数形式给出的曲线方程,只要给定参数向量,再分别求出x,y向量即可输岀曲线: ?t=-pi:pi/100:pi; ? x=t.*cos(3*t); ? y=t.*sin(t).*sin(t); ? plot(x,y) 程序执行后,打开一个图形窗口,在其中绘制出如下曲线 ■ 以上提到plot函数的自变量x,y为长度相同的向量,这是最常见、最基木的用法。实际应用中还有一些变化。 2.含多个输入参数的plot函数

最全面的MATLAB作图

Matlab绘图 强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。 本章介绍绘制二维和三维图形的高层绘图函数以及其他图形控制函数的使用方法,在此基础上,再介绍可以操作和控制各种图形对象的低层绘图操作。 一.二维绘图 二维图形是将平面坐标上的数据点连接起来的平面图形。可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等。二维图形的绘制是其他绘图操作的基础。 一.绘制二维曲线的基本函数 在Matlab中,最基本而且应用最为广泛的绘图函数为plot,利用它可以在二维平面上绘制出不同的曲线。 1.plot函数的基本用法 plot函数用于绘制二维平面上的线性坐标曲线图,要提供一组x坐标和对应的y坐标,可以绘制分别以x和y为横、纵坐标的二维曲线。plot函数的应用格式 plot(x,y) 其中x,y为长度相同的向量,存储x坐标和y坐标。

例51 在[0 , 2pi]区间,绘制曲线 程序如下:在命令窗口中输入以下命令 >> x=0:pi/100:2*pi; >> y=2*exp(-0.5*x).*sin(2*pi*x); >> plot(x,y) 程序执行后,打开一个图形窗口,在其中绘制出如下曲线 注意:指数函数和正弦函数之间要用点乘运算,因为二者是向量。 例52 绘制曲线 这是以参数形式给出的曲线方程,只要给定参数向量,再分别求出x,y向量即可输出曲线: >> t=-pi:pi/100:pi; >> x=t.*cos(3*t); >> y=t.*sin(t).*sin(t); >> plot(x,y)

MATLAB各种“窗函数”定义及调用

MATLAB窗函数大全 1.矩形窗(Rectangle Window)调用格式:w=boxcar(n),根据长度n 产生一个矩形窗w。 2.三角窗(Triangular Window)调用格式:w=triang(n),根据长度n 产生一个三角窗w。 3.汉宁窗(Hanning Window)调用格式:w=hanning(n),根据长度n 产生一个汉宁窗w。 4.海明窗(Hamming Window)调用格式:w=hamming(n),根据长度n 产生一个海明窗w。 5.布拉克曼窗(Blackman Window)调用格式:w=blackman(n),根据长度n 产生一个布拉克曼窗w。 6.恺撒窗(Kaiser Window)调用格式:w=kaiser(n,beta),根据长度n 和影响窗函数旁瓣的β参数产生一个恺撒窗w。 窗函数: 1.矩形窗:利用w=boxcar(n)的形式得到窗函数,其中n为窗函数的长度,而返回值w为一个n阶的向量,它的元素由窗函数的值组成。‘w=boxcar(n)’等价于‘w=ones(1,n)’. 2.三角窗:利用w=triang(n)的形式得到窗函数,其中n为窗函数的长度,而返回值w为一个n阶的向量,它的元素由窗函数的值组成。 w=triang(N-2)等价于bartlett(N)。

3.汉宁窗:利用w=hanning(n)得到窗函数,其中n为窗函数的长度,而返回值w 为一个n 阶的向量,包含了窗函数的n个系数。 4.海明窗:利用w=hamming(n)得到窗函数,其中n为窗函数的长度,而返回值w 为一个n 阶的向量,包含了窗函数的n个系数。它和汉宁窗的主瓣宽度相同,但是它的旁瓣进一步被压低。 5.布拉克曼窗:利用w=blackman(n)得到窗函数,其中n为窗函数的长度,而返回值w为一个n阶的向量,包含了窗函数的n个系数。它的主瓣宽度是矩形窗主瓣宽度的3倍,为12*pi/N,但是它的最大旁瓣值比主瓣值低57dB。 6.切比雪夫窗:它是等波纹的,利用函数w=chebwin(N,R)方式设计出N阶的切比雪夫2窗函数,函数的主瓣值比旁瓣值高RdB,且旁瓣是等波纹的。 7.巴特里特窗:利用w=bartlett(n)的形式得到窗函数,其中n为窗函数的长度,而返回值w为一个n阶的向量,包含了窗函数的n个系数。 8.凯塞窗:利用w=kaiser(n,beta)的形式得到窗函数。

几何图形技术_Matlab高级绘图

Matlab绘图系列之高级绘图 一、目录 1.彗星图 二维彗星图 三维彗星图 2.帧动画 3.程序动画 4.色图变换 5.V oronoi图和三角剖分 V oronoi图 三角剖分 6.四面体 7.彩带图 彩带图 三维流彩带图 8.伪彩图 9.切片图 切片图 切片轮廓线图 10.轮廓图 显示轮廓线 显示围裙 瀑布效果

带光照模式的阴影图 11.函数绘图 轮廓线、网格图、曲面图、轮廓网格图 轮廓曲面图、二维曲线、极坐标曲线图、自定义函数12.三维图形控制 视点 灯光效果 色彩控制 二、图形示例 1.彗星图 二维彗星图 t=0:.01:2*pi; x=cos(2*t).*(cos(t).^2); y=sin(2*t).*(sin(t).^2); comet(x,y); title('二维彗星轨迹图') hold on plot(x,y)

三维彗星图 a=12; b=9; T0=2*pi;%T0是轨道的周期 T=5*T0; dt=pi/100; t=[0:dt:T]'; f=sqrt(a^2-b^2);%地球与另一焦点的距离 th=12.5*pi/180;%未经轨道与x-y平面的倾角E=exp(-t/20);%轨道收缩率 x=E.*(a*cos(t)-f); y=E.*(b*cos(th)*sin(t)); z=E.*(b*sin(th)*sin(t));

plot3(x,y,z,'g')%画全程轨线hold on,sphere(20);%画地球axis off title('卫星返回地球示例') x1=-18*T0; x2=6*T0; y1=-12*T0; y2=12*T0; z1=-6*T0; z2=6*T0; axis([x1 x2 y1 y2 z1 z2]) % axis([-15 10 -15 10 -10 10]) axis equal comet3(x,y,z,0.02);%画运动轨线hold off 2.帧动画

MATLAB(matlab)二维绘图fplot语句的应用示例汇总(非常全面)

Matlab二维绘图fplot语句的帮助应用示例 一、每种语句格式的使用说明

二、每种语句格式的应用示例 (1)fplot(f)应用举例 fplot(@(x)cos(x)); (2)fplot (f, xinterval) 应用举例:xinterval——[Xmin, Xmax] fplot(@(x)cos(x), [-pi,pi]);

(3)fplot (funx, funy)应用举例——相当于画带参数的函数 (4)fplot( funx, funy, tinterval)应用举例:tinterval——[tmin tmax]

(5)fplot(___, LineSpec)的应用举例 fplot(@(x)exp(x),[-3 0],'--*y'); hold on; %在一张图上画多个函数fplot(@(x)cos(x),[0 3],'-.^b'); fplot(@(x)sin(x),[3,6],'-+g'); grid on %加网格线

(6)fplot (___,Name, Value)的应用举例 绘制具有不同相位的三个正弦波。对于第一个,使用 2 磅的线宽。对于第二个,指定带有圆圈标记的红色虚线线型。对于第三个,指定带有星号标记的青蓝色点划线线型。 其中第一条语句的’Linewidth’对应name;2对应value。 后附线条属性及各种标记的值,及常用的name, value的值 (7)fplot(ax,___)的应用举例

(8)fp = fplot(___)的应用举例 通过使用圆点表示法设置属性,将线条更改为红色点线。添加交叉标记,并将标记颜色设置为蓝色。 (9)[x,y] = fplot(___)的应用举例

MATLAB自定义函数及局部变量.docx

MATLAB 口定义函数及局部变量 2009-11-20 09:17 在开始学习MATLAB的时候并没有发现这个软件有着这么强大的功能,随着课题的不断深入,也在逼迫着自己不断的去应用新的公式并开发新的算法,这就牵涉到了如何在MATLAB中口定义函数的问题,随之而来口然就是所有编程语言所面临的问题,函数调用、局部变量等等。下面就我自己整理的一些心得与大家交流。希望对你也有所帮助。 1、编写自定义函数时尽量分以下四部分: (1)函数定义行:function[outl, out2,.. ]=filcname (ini, in2,..),输入和输岀参数个数分别由nargin和nargout两个MATLAB保留的变量来给岀。 (2)第一行帮助行,以%开头,作为1 ookfor指令搜索的行 (3)函数体说明及有关注解:以(%)开头,用以说明函数的作用及有关内容。如果不希望显示某段信息,可在它的前面加空行 (4)函数体:函数体内使用的除返回和输入变量这些在function语句屮直接引用的变量以外的所有变量都是局部变量,即在该函数返回之后,这些变量会口动在MATLAB的工作空间中清除掉。如果希望这些中间变量成为在整个程序中都起作用的变量,则可以将它们设置为全局变量。 例如卜?血就是一个标准的口字义函数。 function A=myhilb(n, m) % MYH1LB是一个示范性的M-function? % A=MYHILB(N, M)会生成一个NXM 的Hilbert 矩阵 A. % A二MYHILB(N)会生成一个NXN 的Hilbert 矩阵. % MYI1ILB(N,M)仅仅显示一个II订bert矩阵,而不会返冋任何矩阵。 %这些内容在用help时不会显示 if nargout>l, error Too many output arguments.') ; end if nargin=l, m=n; el seif nargin=0 nargin>2 error Wrong number of iutput arguments.');

MATLAB自定义函数及局部变量

MATLA自定义函数及局部变量 2009-11-20 09:17 在开始学习MATLA的时候并没有发现这个软件有着这么强大的功能,随着课题的不断深入,也在逼迫着自己不断的去应用新的公式并开发新的算法,这就牵涉到了如何在MATLA中自定义函数的问题,随之而来自然就是所有编程语言所面临的问题,函数调用、局部变量等等。下面就我自己整理的一些心得与大家交流。希望对你也有所帮助。 1、编写自定义函数时尽量分以下四部分: (1) 函数定义行:function[out1,out2,..]=filename(in1,in2,..) ,输入和输出参数个数分别由nargin和nargout两个MATLA保留的变量来给出。 (2) 第一行帮助行,以%开头,作为lookfor 指令搜索的行 (3) 函数体说明及有关注解:以( %)开头,用以说明函数的作用及有关内 容。如果不希望显示某段信息,可在它的前面加空行 (4) 函数体:函数体内使用的除返回和输入变量这些在function 语句中直接引用的变量以外的所有变量都是局部变量,即在该函数返回之后,这些变量会自动在MATLA的工作空间中清除掉。如果希望这些中间变量成为在整个程序中都起作用的变量,则可以将它们设置为全局变量。 例如下面就是一个标准的自字义函数 function A=myhilb(n, m) % MYHILB 是一个示范性的M-function. % A=MYHILB(N, M)会生成一个NX M 的Hilbert 矩阵A. % A=MYHILB(N会生成一个NX N 的Hilbert 矩阵. % MYHILB(N,M) 仅仅显示一个Hilbert 矩阵,而不会返回任何矩阵 %这些内容在用help 时不会显示 if nargout>1, error('Too many output arguments.'); end if nargin==1, m=n; elseif nargin==0 | nargin>2 error('Wrong number of iutput arguments.');

Matlab自定义函数的五种方法

Matlab自定义函数的五种方法 [转] n 1、函数文件+调用命令文件:需单独定义一个自定义函数的M文件; n 2、函数文件+子函数:定义一个具有多个自定义函数的M文件; n 3、Inline:无需M文件,直接定义; n 4、Syms+subs: 无需M文件,直接定义; n 5、字符串+subs:无需M文件,直接定义. 1、函数文件+调用函数文件:定义多个M文件: % 调用函数文件:myfile.m clear clc for t=1:10 y=mylfg(t); fprintf(‘%4d^(1/3)=%6.4f\n’,t,y); end %自定义函数文件: mylfg.m function y=mylfg(x) %注意:函数名(mylfg)必须与文件名(mylfg.m)一致 Y=x^(1/3); 注:这种方法要求自定义函数必须单独写一个M文件,不能与调用的命令文件写在同一个M文件中。 2、函数文件+子函数:定义一个具有多个子函数的M 文件

%命令文件:funtry2.m function []=funtry2() for t=1:10 y=lfg2(t) fprintf(‘%4d^(1/3)=%6.4f\n’); End function y=lfg2(x) Y= x^(1/3); %注:自定义函数文件funtry2.m中可以定义多个子函数function。子函数lfg2只能被主函数和主函数中的其他子函数调用。 3、Inline:无需M文件,直接定义; %inline命令用来定义一个内联函数:f=inline(‘函数表达式’, ‘变量1’,’变量2’,……)。 调用方式:y=f(数值列表) %注意:代入的数值列表顺序应与inline()定义的变量名顺序一致。 例如: f=inline(‘x^2+y’,’x’,’y’); z=f(2,3) Ans=7 注:这种函数定义方式是将它作为一个内部函数调用。特点是,它是基于Matlab 的数值运算内核的,所以它的运算速度较快,程序效率更高。缺点是,该方法只能对数值进行代入,不支持符号代入,且对定义后的函数不能进行求导等符号运算。 例: Clear Clc

matlab 常用画图调整命令汇总(带例子)

Matlab常用画图调整 1.%单y轴 2.plot(t*1e+9,abs(iGG)/max(abs(iGG)),'k','linewidth',2); 3.axis([-5,5,0,1]) 4.xlabel('时间/ns'); 5.ylabel('幅度/a.u.'); 6.set(get(gca,'title'),'FontSize',10,'FontName','宋体');%设置标题字体大小,字型 7.set(get(gca,'XLabel'),'FontSize',10,'FontName','Times New Roman');%设置X坐标标题字 体大小,字型 8.set(get(gca,'YLabel'),'FontSize',10,'FontName','Times New Roman');%设置Y坐标标题字 体大小,字型 9.set(gca,'FontName','Times New Roman','FontSize',10)%设置坐标轴字体大小,字型 10.text(0.3,1.2,'(a)','FontSize',10,'FontName','Times New Roman');%设置文本字型字号 11.set(gca,'XTick',[0 10 20 30 40 50 60 70 80 90])%设置X坐标轴刻度数据点位置 12.set(gca,'XTickLabel',{'0','10','20','30','40','50','60','70','80','90'})%设置X坐 标轴刻度处显示的字符 13.set(gca,'YTick',[-15 -10 -5 0 5 10 15])%设置X坐标轴刻度数据点位置 14.set(gca,'YTickLabel',{'-15','-10','-5','0','5','10','15'})%设置Y坐标轴刻度处显示的 字符 15.axis([0,90,-20,20]) 16.set(gca,'YTickLabel',[]);%只显示y坐标轴刻度,不显示y坐标轴的值; 17.set(gca,'XTickLabel',[]);%只显示x坐标轴刻度,不显示x坐标轴的值; 18.set(gca,'ytick',[]);%y轴的坐标值和刻度均不显示; 19.set(gca,'xtick',[]);%x轴的坐标值和刻度均不显示; 20. 21.figure; 22.set(gcf,'Position',[400,300,600,200]);%设定plot输出图片的尺寸。参数含义为: xmin,ymin,width,height 23.%plot的默认参数为[232,246,560,420],Position的单位可以用units属性制定,units属性的值 可以是下列字符串中的任何一 24.%种:pixel(像素,缺省值)、normalized(相对单位)、inches(英寸)、centimeters(厘米)、 points(磅)。 25.%指定大小后,在figure中用text输出的文字大小,设置的是多大,在WORD中显示的就是多大。 26.set(gcf,'units','centimeters','Position',[4,3,6,2]);%指定fiugre的尺寸为6cm宽,2cm 高。 27.%也可以直接用下属语句: 28.fiure('units','centimeters','Position',[4,3,6,2]); 29. 30.%改变ylabel离坐标轴的距离 31.hc=findobj(allchild(gcf),'Type','axes'); 32.hc2=findobj(allchild(hc),'Type','text'); 33.set(hc2(3),'Position',[0 0 0]);

实验5 matlab自定义函数与导数应用

实验5 matlab 自定义函数与导数应用 实验目的 1.学习matlab 自定义函数. 2.加深理解罗必塔法则、极值、最值、单调性. 实验内容 1.学习matlab 自定义函数及求函数最小值命令. 函数关系是指变量之间的对应法则,这种对应法则需要我们告诉计算机,这样,当我们输入自变量时,计算机才会给出函数值,matlab 软件包含了大量的函数,比如常用的正弦、余弦函数等.matlab 允许用户自定义函数,即允许用户将自己的新函数加到已存在的matlab 函数库中,显然这为matlab 提供了扩展的功能,无庸置疑,这也正是matlab 的精髓所在.因为matlab 的强大功能就源于这种为解决用户特殊问题的需要而创建新函数的能力.matlab 自定义函数是一个指令集合,第一行必须以单词function 作为引导词,存为具有扩展名“.m ”的文件,故称之为函数M -文件. 函数M -文件的定义格式为: function 输出参数=函数名(输入参数) 函数体 …… 函数体 一旦函数被定义,就必须将其存为M -文件,以便今后可随时调用.比如我们希望建立 函数12)(2++=x x x f ,在matlab 工作区中输入命令: syms x ;y=x^2+2*x+1; 不能建立函数关系,只建立了一个变量名为y 的符号表达式,当我们调用y 时,将返回这一表达式. y ? y=x^2+2*x+1 当给出x 的值时,matlab 不能给出相应的函数值来. x=3;y ? y=x^2+2*x+1 如果我们先给x 赋值. x=3;y=x^2+2*x+1 得结果:y=16 若希望得出2|=x y 的值,输入: x=2;y ? 得结果:y=16,不是2=x 时的值.读者从这里已经领悟到在matlab 工作区中输入命令:y=x^2+2*x+1不能建立函数关系,如何建立函数关系呢?我们可以点选菜单Fill\New\M-fill 打开matlab 文本编辑器,输入:

自定义的函数用matlab绘图方法

matlab 画图中线型及颜色设置 (2010-04-06 11:18:29) MATLAB 受到控制界广泛接受的一个重要原因是因为它提供了方便的绘图功能.本章主要介绍 2 维图形对象的生成函数及图形控制函数的使用方法,还将 简单地介绍一些图形的修饰与标注函数及操作和控制 MATLAB 各种图形对象的方法. 第一节 图形窗口与坐标系一.图形窗口 1.MATLAB 在图形窗口中绘制或输出图形,因此图形窗口就像一张绘图纸. 2. 在 MATLAB 下,每一个图形窗口有唯一的一个序号 h,称为该图形窗口的句柄.MATLAB 通过管理图形窗口的句柄来管理图形窗口; 3.当前窗口句柄可以由 MATLAB 函数 gcf 获得; 4.在任何时刻,只有唯一的一个窗口是当前的图形窗口(活跃窗口); figure(h)----将句柄为 h 的窗口设置为当前窗口; 5.打开图形窗口的方法有三种: 1)调用绘图函数时自动打开; 2)用 File---New---Figure 新建; 3)figure 命令打开,close 命令关闭. 在运行绘图程序前若已打开图形窗口,则绘图函数不再打开,而直接利用已 打开的图形窗口;若运行程序前已存在多个图形窗口,并且没有指定哪个窗 口为当前窗口时,则以最后使用过的窗口为当前窗口输出图形. 6.窗口中的图形打印:用图形窗口的 File 菜单中的 Print 项. 7.可以在图形窗口中设置图形对象的参数.具体方法是在图形窗口的 Edit 菜 单中选择 Properties 项,打开图形对象的参数设置窗口,可以设置对象的属性. 二.坐标系 1.一个图形必须有其定位系统,即坐标系; 2.在一个图形 窗口中可以有多个坐标系,但只有一个当前的坐标系; 3.每个坐标系都有唯一的标识符,即句柄值; 4.当前坐标系句柄可以由 MATLAB 函数 gca 获得; 5.使某个句柄标识的坐标系成为当前坐标系,可用如下函数:axes(h) h 为指定坐标系句柄值. 6.一些有关坐标轴的函数: 1)定义坐标范围:一般 MATLAB 自动定义坐标范围,如用户认为设定的不合适,可用 可用:axis([Xmin, Xmax, Ymin, Ymax]) 来重新设定来重新设定; 可用 29 2) 坐标轴控制:MATLAB 的缺省方式是在绘图时,将所在的坐标系也画出来,为隐去坐标系,可用 axis off;axis on 则显示坐标轴可用 (缺省值). 3)通常 MATLAB 的坐标系是长方形,长宽比例大约是 4:3,为了得到一个正方形的坐标系可用:axis square 4)坐标系横纵轴的比例是自动设置的,比例可能不一样,要得到相同比例的坐标系,可用:axis equal 第二节二维图形的绘制一. plot 函数 plot 函数是最基本的绘图函数,其基本的调用格式为: 1.plot(y)------绘制向量 y 对应于其元素序数的二维曲线图, 如果 y 为复数向量, 则绘制虚部对于实部的二维曲线图. 例:绘制单矢量曲线图. y=[0 0.6 2.3 5 8.3 11.7 15 17.7 19.4 20]; plot(y) 由于 y 矢量有 10 个元素,x 坐标自动定义为[13 4 5 6 7 8 9 10].图形为: 12345678910 0 2 4 6 8 10 12 14 16 18 20 2.plot(x,y)------ 绘制由 x,y 所确定的曲线. 1)x,y 是两组向量,且它们的长度相等,则 plot(x,y)可以直观地绘出以 x 为横坐标,y 为纵坐标的图形. 如:画正弦曲线: t=0:0.1:2*pi; y=sin(t); plot(t,y) 2)当 plot(x,y)中,x 是向量,y 是矩阵时,则绘制 y 矩阵中各行或列对应于 30 向量 x 的曲线.如果 y 阵中行的长度与 x 向量的长度相同,则以 y 的行数据作为一组绘图数据;如果 y 阵中列的长度与 x 向量的长度相同,则以 y 的列数据作为一组绘图数据;如果 y 阵中行, 列均与 x 向量的长度相同,则以 y 的每列数据作为一组绘图数据. 例:下面的程序可同时绘出三条曲线.MATLAB 在绘制多条曲线时,会按照一定的规律自动变化每条曲线的的颜色. x=0:pi/50:2*pi; y(1,:)=sin(x); y(2,:)=0.6*sin(x); y(2,:)=0.3*sin(x); plot(x,y) 或者还可以这样用: x=0:pi/50:2*pi; y=[ sin(x); 0.6*sin(x); 0.3*sin(x)]; plot(x,y) 01234567 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 3) 如果 x,y 是同样大小的矩阵,则 plot(x,y)绘出 y 中各列相应于 x 中各列的图形. 例:x(1,:)=0:pi/50:2*pi; x(2,:)=pi/4:pi/50:2*pi+pi/4; x(3,:)=pi/2:pi/50:2*pi+pi/2; y(1,:)=sin(x(1,:)); y(2,:)=0.6*sin(x(2,:)); y(3,:)=0.3*sin(x(3,:)); plot(x,y) x=x'; y=y'; figure 31 plot(x,y) 在这个例子中,x------ 3x101,y------3x101,所以第一个 plot 按列画出 101 条曲线,每条 3 个点;而 x'------101x3,y'------

MATLAB自定义函数及局部变量

MATLAB自定义函数及局部变量 2009-11-20 09:17 在开始学习MATLAB的时候并没有发现这个软件有着这么强大的功能,随着课题的不断深入,也在逼迫着自己不断的去应用新的公式并开发新的算法,这就牵涉到了如何在MATLAB中自定义函数的问题,随之而来自然就是所有编程语言所面临的问题,函数调用、局部变量等等。下面就我自己整理的一些心得与大家交流。希望对你也有所帮助。 1、编写自定义函数时尽量分以下四部分: (1) 函数定义行:function[out1,out2,..]=filename(in1,in2,..),输入和输出参数个数分别由nargin和nargout两个MATLAB保留的变量来给出。 (2) 第一行帮助行,以%开头,作为lookfor指令搜索的行 (3) 函数体说明及有关注解:以(%)开头,用以说明函数的作用及有关内容。如果不希望显示某段信息,可在它的前面加空行 (4) 函数体:函数体内使用的除返回和输入变量这些在function语句中直接引用的变量以外的所有变量都是局部变量,即在该函数返回之后,这些变量会自动在MATLAB的工作空间中清除掉。如果希望这些中间变量成为在整个程序中都起作用的变量,则可以将它们设置为全局变量。 例如下面就是一个标准的自字义函数。 function A=myhilb(n, m) % MYHILB 是一个示范性的 M-function. % A=MYHILB(N, M) 会生成一个N×M的Hilbert矩阵A. % A=MYHILB(N)会生成一个N×N的Hilbert矩阵. % MYHILB(N,M) 仅仅显示一个Hilbert矩阵,而不会返回任何矩阵。 %这些内容在用help时不会显示 if nargout>1, error('Too many output arguments.'); end if nargin==1, m=n; elseif nargin==0 | nargin>2 error('Wrong number of iutput arguments.');

matlab函数定义和调用问题

函数调用是使主程序简明清晰的重要工具,在很大程度上简化了程序的复杂程度,也方便于不同程序使用相同模块的调用。下面主要介绍: 函数文件+调用命令文件:需单独定义一个自定义函数的M文件 这种方法很简单,定义好输入输出就可以自由调用函数。 (1)定义函数 新建一个m文件在m文件里面第一行输入function [输出值]=(任何字母)(输入变量),输入变量和输出值个数不限,根据自己需要定义,接着定义你要实现的功能,最后保存这个m文件,注意:这个m文件的名字就是后面程序调用的名称,同时主程序和函数文件必须保存在同一个文件夹中,而且可以在函数中再嵌套其它函数。 (2)调用函数 [输出值]=函数保存的文件名(输入变量) 注意,如果输出值只有一个,可以不用中括号,如果两个以上就不必须使用,否则只输出第一个值,而且采用小括号会报错。 实例 编写一个解方程的程序: 2 例如求方程的根, +-= x x 2370 定义函数: function [x,y]=equal(a,b,c) d=b^2-4*a*c; x=(-b+sqrt(d))/(2*a); y=(-b-sqrt(d))/(2*a); 文件保存为equal 主程序调用: [r1 r2]=myfunction(2,3,-7) 结果: r1 =1.2656 r2 = -2.7656

还是上面的例子,实现函数中调用函数: 定义函数1: function [testfun]=supple(j) testfun =j+5; 保存文件为supple(此处不一定要和函数名相同) 定义函数2: function [x,y]=equal(a,b,c) c=supple(c); %调用了一个函数 d=b^2-4*a*c; x=(-b+sqrt(d))/(2*a); y=(-b-sqrt(d))/(2*a); 文件保存为equal 主程序调用: [r1 r2]=myfunction(2,3,-12) %(将c有-7改为-12) 结果: r1 =1.2656 r2 = -2.7656 %计算结果相同,说明函数中调用函数成功。 下面是其它几种常用的函数定义和调用方法: 1、函数文件+调用函数文件:定义多个M文件: % 调用函数文件:myfile.m clear clc for t=1:10 y=mylfg(t); fprintf(‘%4d^(1/3)=%6.4f\n’,t,y);

基于MATLAB的数据处理与统计作图概要

Smooth函数: load count.dat; c=smooth(count(:)); C1=reshape(c,24,3); subplot(3,1,1);plot(count,':'); hold on; plot(C1,'-'); C2=zeros(24,3); for I=1:3 C2(:,I)=smooth(count(:,I)); end; subplot(3,1,2);plot(count,':');hold on; plot(C2,'-'); subplot(3,1,3);plot(C2-C1,'o-'); >> x=15*rand(150,1); y=sin(x)+0.5*(rand(size(x))-0.5); y(ceil(length(x)*rand(2,1)))=3; noise=normrnd(0,15,150,1); y=y+noise; >> yy1=smooth(x,y,0.1,'loess'); >> yy2=smooth(x,y,0.1,'rloess'); >> yy3=smooth(x,y,0.1,'moving'); >> yy4=smooth(x,y,0.1,'lowess'); >> yy5=smooth(x,y,0.1,'sgolay'); >> yy6=smooth(x,y,0.1,'rlowess');

>> [xx,ind]=sort(x); subplot(3,2,1);plot(xx,y(ind),'b-.',xx,yy1(ind),'r-'); subplot(3,2,2);plot(xx,y(ind),'b-.',xx,yy2(ind),'r-'); subplot(3,2,3);plot(xx,y(ind),'b-.',xx,yy3(ind),'r-'); subplot(3,2,4);plot(xx,y(ind),'b-.',xx,yy4(ind),'r-'); subplot(3,2,5);plot(xx,y(ind),'b-.',xx,yy5(ind),'r-'); subplot(3,2,6);plot(xx,y(ind),'b-.',xx,yy6(ind),'r-'); Smoothts函数: >> x=122+rand(500,4); p=x(:,4)'; out1=smoothts(p,'b',30); out2=smoothts(p,'b',100); out3=smoothts(p,'g',30); out4=smoothts(p,'g',100,100); out5=smoothts(p,'e',30); out6=smoothts(p,'e',100); subplot(2,2,1);plot(p); subplot(2,2,2);plot(out1,'k');hold on;plot(out2,'m.'); subplot(2,2,3);plot(out3,'k');hold on;plot(out4,'m.'); subplot(2,2,4);plot(out5,'k');hold on;plot(out6,'m.');

matlab中函数定义

总结matlab中函数定义的一些内容: 1, 函数定义格式在matlab中应该做成M文件,文件名要和你文件里的function后面的函数名一致 在File新建一个M-file 在M-file里编辑函数 格式为: function [输出实参表]=函数名(输入实参数) 注释部分 函数体语句 return语句(可以有可以没有) 如果是文件中的子函数,则可以任意取名,也可以在同一个文件中定义多个子函数 例: function [max,min]=mymainfun(x) %主函数 n=length(x); max=mysubfun1(x,n); min=mysubfun2(x); function r=mysubfun1(x,n) %子函数1 x1=sort(x); r=x1(n); function r=mysubfun2(x) %子函数2 x1=sort(x); r=x1(1); Matlab自定义函数的五种方法 1、函数文件+调用命令文件:需单独定义一个自定义函数的M文件; 2、函数文件+子函数:定义一个具有多个自定义函数的M文件; 3、Inline:无需M文件,直接定义; 4、Syms+subs:无需M文件,直接定义; 5、字符串+subs:无需M文件,直接定义. 1、函数文件+调用函数文件:定义多个M文件: %调用函数文件:myfile.m clear clc for t=1:10 y=mylfg(t); fprintf(‘M^(1/3)=%6.4f\n’,t,y);

end %自定义函数文件: mylfg.m function y=mylfg(x) %注意:函数名(mylfg)必须与文件名(mylfg.m)一致 Y=x^(1/3); 注:这种方法要求自定义函数必须单独写一个M文件,不能与调用的命令文件写在同一个M文件中。 2、函数文件+子函数:定义一个具有多个子函数的M 文件 %命令文件:funtry2.m function []=funtry2() for t=1:10 y=lfg2(t) fprintf(‘M^(1/3)=%6.4f\n’); End function y=lfg2(x) Y= x^(1/3); %注:自定义函数文件funtry2.m中可以定义多个子函数function。子函数lfg2只能被主函数和主函数中的其他子函数调用。 3、Inline:无需M文件,直接定义; %inline命令用来定义一个内联函数:f=inline(‘函数表达式’, ‘变量1’,’变量2’,……)。 调用方式:y=f(数值列表) %注意:代入的数值列表顺序应与inline()定义的变量名顺序一致。 例如: f=inline(‘x^2+y’,’x’,’y’); z=f(2,3) Ans=7 注:这种函数定义方式是将它作为一个内部函数调用。特点是,它是基于Matlab 的数值运算内核的,所以它的运算速度较快,程序效率更高。缺点是,该方法只能对数值进行代入,不支持符号代入,且对定义后的函数不能进行求导等符号运算。 例: Clear Clc f=’x^2’; Syms x g; g=x^2; h=inline(‘x^2’,’x’);

Matlab常用的绘图程序

下面是一些绘图的源程序,来自Matlab自带的help文件程序1 figure t = 0:pi/20:2*pi; plot(t,sin(t),'-.r*') hold on plot(t,sin(t-pi/2),'--mo') plot(t,sin(t-pi),':bs') hold off ;title('sin(t),sin(t-pi/2),sin(t-pi)') 程序2 figure plot(t,sin(2*t),'-mo',... 'LineWidth',2,...

'MarkerEdgeColor','k',... 'MarkerFaceColor',[.49 1 .63],... 'MarkerSize',10) 程序3 load clown surface(peaks,flipud(X),... 'FaceColor','texturemap',... 'EdgeColor','none',... 'CDataMapping','direct') colormap(map) view(-35,45)

程序4 pcolor(hadamard(20)) colormap(gray(2)) axis ij axis square

程序5 n = 6; r = (0:n)'/n; theta = pi*(-n:n)/n; X = r*cos(theta); Y = r*sin(theta); C = r*cos(2*theta); pcolor(X,Y,C) axis equal tight

程序6 load mandrill figure('color','k') image(X) colormap(map) axis off % Remove axis ticks and numbers axis image % Set aspect ratio to obtain square pixels

相关文档
相关文档 最新文档