Matlab创建文件、function文件和函数调用

目录

一、建立文件

二、函数调用

二、函数句柄

三、匿名函数

想查找相关内容也可在页面按ctrl+F搜索文字


一、建立文件

新建脚本,保存后可运行,后缀为.m

二、函数调用

创建ffib.m文件,编写求Fibonacci数列的函数   

   function 输出形参表=函数名(输入形参表)

          注释说明部分

          函数体

  • 若输出参数仅有一个,则无须方括号;若有多个输出参数,则用逗号分隔。
  • Matlab中的主函数名必须与M文件名相同,并且函数对变量的操作是在函数体内(专用的函数工作空间),而非工作空间。这与脚本文件大不一样
  • 其中函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于1个时,则应该用方括号括起来。
  • 函数文件是另一种形式的M文件,每一个函数文件都定义一个函数。事实上,MATLAB提供的标准函数大部分都是由函数文件定义的
  • 函数的定义行(必须有)----关键字function申明以下为函数定义
  • 函数体----函数体是函数的主体部分,它可包括各种MATLAB语句,还可包括函数调用和脚本调用。
function f=ffib(n)
%用于求Fibonacci数列的函数文件
%f=ffib(n)
%2019年7月8日编
f=[1,1];
i=1;
while f(i)+f(i+1)<n
    f(i+2)=f(i)+f(i+1);
    i=i+1;
end

>> ffib(200)

ans =

  1 至 12 列

     1     1     2     3     5     8    13    21    34    55    89    144

创建的如果为函数文件,则文件样式改变普通运行文件样式为:

三、函数句柄

  • 函数句柄(Function handle)是一种数据类型,它保存着“为该函数创建句柄时的路径、视野、函数名以及可能存在的重载方法”。它可使"函数调用""变量调用"一样灵活方便,提高调用速度,提高软件重用性。
  • 函数句柄必须通过专门定义才会生成。定义句柄方法有两种:利用@符号,或利用转换函数str2func。

  • 函数句柄演算指令feval的使用方式

  [y1,y2,...]=feval(Fhandle,arg1,arg2,…)

  [y1,y2,…]=feval('Fname',arg1,arg2,…)

示例1:

函数定义

函数调用:

>> t=funf(@fund,[1,2,3],[3,2,1])

t =

    64

>> t=funf(@func,[1,2,3],[3,2,1])

t =

    10

示例2:

函数定义

function f = myfunf(x,a)
f = (x - a)^2; 

函数调用

>> x = fminbnd(@(x)myfunf(x,1.5),0,1) 

x =

    0.9999

四、匿名函数

  • ​​​匿名函数:直接将函数关系以函数句柄方式存储在变量中;定义格式:fhandle=@(arglist) expr
  • 单重匿名函数示例:
f=@(x,a,b)  a*x.^2+b;    % 匿名函数定义
x=1:5 , y=f(x,2,-1)      % 匿名函数调用
  • 多重匿名函数:由两个以上@(arglist)符号引导的表达式所定义的函数;每层@后紧跟的变量表的作用域直至表达式结尾。
  • 二重匿名函数示例:
f=@(a,b) @(x) a*x.^2+b

f23=f(2,3)

f23v=f23(1:5)

示例:

已知在[0,u]区间上的数值积分值,求解u=?

sol=fzero(@(u) 0.99*pi/2-quad(@(x) sin(x).^2./x.^2,0,u),1)
  • 处理通过多个返回参数返回函数结果可用deal(X1,X2,...)函数
fun=@(x) deal([2*x(1)-1;x(1)+x(2)],2*x.^2-1)

[a,b]=fun(1:5)

 

  • 46
    点赞
  • 274
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值