Matlab的函数文件、匿名函数、函数递归调用、函数参数的可调性、全部变量与局部变量

您所在的位置:网站首页 函数文件和脚本文件的区别matlab Matlab的函数文件、匿名函数、函数递归调用、函数参数的可调性、全部变量与局部变量

Matlab的函数文件、匿名函数、函数递归调用、函数参数的可调性、全部变量与局部变量

2024-07-15 21:10| 来源: 网络整理| 查看: 265

函数文件

函数文件和之前的脚本文件类似,基本格式如下: function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 (这里面也可以有return语句)

1.当有多个形参时,形参之间用逗号分隔,组成形参表。 2.当输出形参多于一个时,应该用方括号括起来,构成一个输出矩阵。 3. 函数文件名通常由函数名再加上扩展名.m组成,函数文件名与函数名也可以不相同,这时以函数文件名为准,但为了理解方便,二者名字取一样。

函数调用: 调用是在命令行窗口或者脚本文件中进行的,调用格式: [输出实参表]=函数名(输入实参表) 在调用函数时,函数输入输出参数称为实际参数,简称实参。

不能用矩阵代替输出实参表

function [s,l] = fcircle(r) %UNTITLED9 此处显示有关此函数的摘要 % 此处显示详细说明 //Matlab中'%'相当于C中的'//',起注释作用 s=pi*r*r; l=2*pi*r; end //这时一个有返回值的函数

函数文件fcircle.m如上所示,在命令行窗口中进行调用

>> r=3; >> [s,p]=fcircle(r) //[s,p]接收返回值 s = 28.2743 p = 18.8496 但是不能用矩阵代替[s,p],如下所示: A = [] >> A=fcircle(r) A = 28.2743 //这样就是错误的,必须用输出实参表的形式 匿名函数

基本格式如下: 函数句柄变量=@(匿名函数输入参数)匿名函数表达式 或者 函数句柄变量=@函数名 其中,@是函数句柄的运算符,第二种格式的函数名可以是内部函数或者自定义的函数。 直接在命令行窗口进行输入:

>> f=@(x,y) x^2+y^2 f = 包含以下值的 function_handle: @(x,y)x^2+y^2 >> f(3,4) ans = 25 >> h=@sin //sin函数是内部函数 h = 包含以下值的 function_handle: @sin >> h(pi/2) ans = 1

例1:

用匿名函数写第一个f(n),函数文件写第二个f(n) 函数文件f2.m如下:

function f = f2(n) f=0; for i=1:n f=f+i*(i+1); end

脚本文件function1.m如下,在脚本文件中调用函数f1和f2,

f1=@(n) n+10*log(n*n+5); //Matlab中ln就是log,lg是log10 y1=f1(40)/(f1(30)+f1(20)) y2=f2(40)/(f2(30)+f2(20))

命令行窗口运行:

>> function1 y1 = 0.6390 y2 = 1.7662

思考:第一个函数f1可以用函数文件简单表示,但第二个函数f2怎么用匿名函数表示?好像不能。

函数的递归调用

例2:利用函数的递归调用求n! 函数文件fact.m如下:

function f = fact(n) if n2)

函数文件ffib.m如下:

function f = ffib(n) if n==1 || n==2 f=1; else f=ffib(n-1)+ffib(n-2); end

在脚本文件function3.m调用函数文件ffib.m进行验证:

F=[]; n=input('n=?'); for k=1:n F=[F,ffib(k)*ffib(k)]; end front=sum(F) behind=ffib(n)*ffib(n+1)

命令行窗口运行:

>> function3 n=?10 front = 4895 behind = 4895 函数参数的可调性

nargin,即输入参数的个数 nargout,即输出参数的个数

function f = test1(a,b,c) % 这就像Java中函数的重载 if nargin==1 f=a; elseif nargin==2 f=a+b; elseif nargin==3 f=(a*b*c)/2; end

建立函数文件test1.m,在命令行窗口进行测试:

>> test1(2) ans = 2 >> f=test1(2,3,2) f = 6 全局变量与局部变量

定义全局变量用global声明,所有的函数都可以对其存取和修改。

function f = wad(a,b) global x y f=x*a+y*b; end

建立函数文件wad.m,并在命令行窗口进行测试:

>> global x y >> x=1; >> y=2; >> s=wad(1,2) s = 5


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3