继续说说matlab知识。:Matlab有很多函数供我们使用,比如plot,subplot,fft,abs等。这些函数就像C语言中的函数库一样,使用时只需要在fileàsetpath中设定一下搜索路径就可以了。但是我们要定义自己的函数怎么办?本专题就专门讲matlab函数定义。matlab函数必须由function关键词来定义。方式如下:function[x,y,z]=myexample(N,xn)a=log2(n);ifround(a)~=areturn;endy=ones(1,N);x=1;z=*x(n)fordi=0:Nx=x+di;end上面例子中function是关键词,必须用在文件的最开头一行,也就是函数文件在function之前不能有其他语句,像下面就是不可以的:clear;a=21;functionx=ex2s=1;fordi=0:10s=s+di;endb=2红字部分是我们期望在执行程序时定义函数,这样是不可以的。函数只能单独定义。函数可以返回多个值。从上面定义可以看出,函数返回值有x,y,z,类型不用定义。这一点和C语言只能返回一个值是不同的。另外,返回值可能改变变量的类型。看下面例子:x1=zeros(100,100);y1=1;z1=ones(3,5);xn=0:1:15;[x1,y1,z1]=myexample(11,xn);如果上面myexample函数就是这样的话,则x1变成1*1的矩阵,也就是一个数。y1变成1*11的行向量,z1由原来的3*5变成1*16的一维向量。这一点其实和函数关系不大,变量的赋值都可以改变原来变量的维数。函数名同变量命名规则。上面myexample只是一个例子,实际上可以起任意名字。注意,尽量不要起和matlab系统已有的名字相同的,比如你也起个名叫sin,不是不可以用,但是有可能造成系统真正的sin函数在你的程序中失效了,原因就是搜索规则,可能先搜到你的函数,就不去找系统定义的sin函数了!参数随意,没有参数,可以不要括号。myexample中有连个参数,但是如下的函数也是可以的:functionx=ex2s=1;fordi=0:10s=s+di;end函数不使用workspace中的变量,也不放局部变量到workspace中。为了减少耦合,函数规定使用自己空间里的变量,当进入函数中执行时,系统会创建一个局部的空间存放局部变量,也不参考外部的变量。以上面的myexample函数来说,a和di都是局部变量,大家可以尝试一下,当函数执行完毕后,workspace中是否有局部变量的影子。函数没有明显的结尾。上面myexample就是一个完整的函数程序。不像C语言,函数有明显的{}标记,matlab中函数要么由下一个function结束,要么由return退出,要么是文件自然结束。例:functiona=func1sum=0;fordi=0:10sum=sum+di;enda=1;b=func3(sum);a=b;b=b+1;functionx=func2a=1:2:9;y=sin(2*pi*a);plot(a,y)returnfunctionan1=func3(sub)func2;sub=sub+1;上面给出同一个文件中的3个函数的例子,其中第一个函数称为主函数,主函数
MATLAB入门(第五季) 来自淘豆网m.daumloan.com转载请标明出处.