找回密码
 注册
关于网站域名变更的通知
查看: 424|回复: 1
打印 上一主题 下一主题

MATLAB如何定义函数

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-8-27 17:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
自定义函数的途径:1 W8 S# a) B( X: U9 Y+ y# }7 Z
M文件函数(M file function)% Z0 A  [; d( v6 b
在线函数(Inline Function)3 E5 h9 Z& H3 b# K' w
匿名函数(Anonymous Function)+ v3 X. s  L9 P2 Q; w
1.M文件函数
3 s2 t  s# i! u2 n& u& q范例  ?+ |# r. Z: d2 o! E& x+ J
function c=myadd(a,b)) C# Y5 G* Q" ]2 f  F
%这里可以写函数的使用说明,前面以%开头
+ r" A4 B2 A0 G% _6 M1 s%在工作区中,help myadd将显示此处的说明$ p4 V( H9 T& z4 j. p7 ~1 T
c=a+b;( @4 \, l; X$ z2 N& }8 h3 {
%end %非必须的
3 b+ h; H8 p" d+ |! \9 P; q+ J% [第一行function告诉Matlab这是一个函数,a,b是输入,c是输出,myadd是函数名。以m文件定义的函数必须保存为函数名的形式,上例中,函数应保存为myadd.m。要使用myadd函数,该函数必须在Matlab的搜索路径中。
( v% {% \) l8 K, R- ^! f: F. u$ O调用方式:5 O6 N( S7 f& U' [- j
在Matlab命令符后输入
4 z) I6 F4 w" [6 x# ua=1;b=2;4 [1 p% U0 T- S
c=myadd(a,b)
6 o' L: X% ^5 T% \/ K' l+ `关于m文件定义函数还有许多的说明,暂时略去。。。6 z* F* @+ k2 o
2.在线函数(Inline Function)
8 i$ X/ G; L0 g& {; `$ a通常作为参数传递给另外一个函数。比如fminsearch,lsqcurvefit等函数需要以函数作为参数。
; T' ^+ L9 S5 B$ A4 A: Y+ k+ F在线函数从字符串表达式创建函数,例如:
2 w; L  \. ~/ I6 A/ ]0 Z+ Z0 Y6 jf=inline('x.^2','x');+ f! q2 a1 _  \( L* y
创建了函数f(x)=x^2。要计算f(3),在工作区输入f(3)即可。f([2 3 4])计算在x=2 3 4时的值) B3 h2 a1 K* K. R
f=inline('x+y','x','y')6 u) ?/ ^; M6 e' w! b' M2 D
创建了二元函数f(x,y)=x+y,工作区输入f(2,3)计算2+3,等同于feval_r(f,2,3)。
: V% r( @+ Y# ^8 |! ]! D3.匿名函数(Anonymous Function)
( }7 s  m* B* [) g& n匿名函数使用函数句柄来表示匿名函数,定义形式为/ @& H4 V6 J7 d
函数句柄=@(变量名) 函数表达式
! M9 ~1 G, [1 r3 F0 q例如:
2 B  ~4 C, j. L1 I& ~f=@(x) x.^2
' x& J! e  [( B  o+ K定义了函数f(x)=x^2,f(2)计算在x=2处的值。" h* q% I; w7 p" q( C% k
匿名函数可以调用Matlab函数,也可以使用工作区中存在的变量,例如
8 A( N: ]/ |) {# Z$ x( C$ i/ Ka=2;
. ~' [' R/ g$ N0 s! J- \$ Ff=@(x) x.^2+a# I* H6 y! J! n6 C! |3 l
f(2) %计算时引用了变量a- N" a% v7 I7 j; u! B2 h
a=0;
/ j! M) j  X" z7 Af(2) %仍然引用的是a=2. U) L0 ?- q7 I" T" `% u: v
匿名函数也可以由Matlab的内置函数或M文件函数创建,例如
- t- `9 H# G0 l: _- }f=@sin %f(x)=sin(x): B8 c! R0 S! |
f(pi/2) %sin(pi/2)
' M6 N/ L1 Z& {8 `functions(f) %查看函数信息
& ]# ]! c# x: m利用单元数组可以创建多个函数的句柄,例如2 w- \# O, _5 E2 J! S0 U2 }
f={@sin @cos}
8 U3 g6 I; t! ], @& w1 Yf{1}(pi/2) %计算sin(pi/2)  Z+ f; z% k0 f7 }, s& E1 R
f{2}(pi) %计算cos(pi)$ P5 @, H6 l8 @. y& Y/ F
函数句柄的另一个重要特征是可以用来表示子函数、私有函数和嵌套函数。
' Z" Q: |  R( m) \Matlab 7以后,建议以匿名函数取代在线函数!!!
( e, v3 j2 y/ G" \) a2 X# _在创建匿名函数时,Matlab记录了关于函数的信息,当使用句柄调用该函数的时候,Matlab不再进行搜索,而是立即执行该函数,极大提高了效率。
- ~5 S) D7 u; z. T& H% L

该用户从未签到

2#
发表于 2020-8-27 18:21 | 只看该作者
MATLAB如何定义函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-6 14:12 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表