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

MATLAB如何定义函数

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
自定义函数的途径:  T. _4 g, @' L8 s
M文件函数(M file function)
/ \- \7 l' s+ |在线函数(Inline Function)8 ^  W, k9 D8 p! W1 c+ z2 D
匿名函数(Anonymous Function)* E% \, T5 T& k' ]( g7 k
1.M文件函数6 k1 [* I& W0 I
范例
) f3 r. o2 a. ^: I2 hfunction c=myadd(a,b)
7 E5 ~  S# g4 u+ ^- b& G%这里可以写函数的使用说明,前面以%开头0 ~& ~, q( ~, a4 U! D
%在工作区中,help myadd将显示此处的说明
# q, c" `9 p8 K; g! ?, @& E7 Pc=a+b;
0 Q7 {+ f" m. |$ [0 j6 A%end %非必须的
$ j, w* l& ^$ {# h) e- s第一行function告诉Matlab这是一个函数,a,b是输入,c是输出,myadd是函数名。以m文件定义的函数必须保存为函数名的形式,上例中,函数应保存为myadd.m。要使用myadd函数,该函数必须在Matlab的搜索路径中。
) @; c+ g- l1 y调用方式:1 L, k/ n0 g$ A
在Matlab命令符后输入( K8 m; w/ p+ Y
a=1;b=2;+ K$ }. {0 W. p: W
c=myadd(a,b)+ |0 j. m: p' C& _
关于m文件定义函数还有许多的说明,暂时略去。。。
0 w4 Y' K+ r: }5 z0 _5 z" ~! r2.在线函数(Inline Function)
! w! t8 u9 L$ Y0 q' B0 J2 F通常作为参数传递给另外一个函数。比如fminsearch,lsqcurvefit等函数需要以函数作为参数。
# l! G* [7 m" I+ ^7 z. D" U在线函数从字符串表达式创建函数,例如:
1 F* [4 \4 @1 A- [1 Vf=inline('x.^2','x');7 U/ x& W$ V9 ~; N9 \& v' X
创建了函数f(x)=x^2。要计算f(3),在工作区输入f(3)即可。f([2 3 4])计算在x=2 3 4时的值
* |4 Y- h6 [! E6 O6 c7 X# af=inline('x+y','x','y')+ D$ j  R  l+ S  H
创建了二元函数f(x,y)=x+y,工作区输入f(2,3)计算2+3,等同于feval_r(f,2,3)。
" p2 v( ^: W  n3 e% t" q3.匿名函数(Anonymous Function)& W/ ~( U/ G0 W, ]9 T4 s7 |
匿名函数使用函数句柄来表示匿名函数,定义形式为5 d% c/ z5 N) ]8 Y: K
函数句柄=@(变量名) 函数表达式/ k- a. a& d! _2 I! S4 Q6 L# [$ b
例如:% K  V+ q3 E( U! R  |& G
f=@(x) x.^2& F2 V* q( ~7 h3 z' T
定义了函数f(x)=x^2,f(2)计算在x=2处的值。
8 v4 u6 p7 K6 l- H/ R) z+ t3 \匿名函数可以调用Matlab函数,也可以使用工作区中存在的变量,例如
: @# f: {6 @3 i1 C- I- ]( N, U. Qa=2;. `# o% t' U$ e8 v
f=@(x) x.^2+a
& @5 f$ q" t! P7 ^5 `f(2) %计算时引用了变量a
# P# I+ ]6 e; da=0;
. K3 r( A, c& ?" Z! M. uf(2) %仍然引用的是a=2
4 T5 D6 Q5 `2 D: U/ Q* }$ y  I匿名函数也可以由Matlab的内置函数或M文件函数创建,例如5 f8 U! N3 a+ S2 m: B
f=@sin %f(x)=sin(x)
5 C, Z: l6 x/ Af(pi/2) %sin(pi/2)# y* ?1 X/ A. `3 Z" u6 G
functions(f) %查看函数信息
( T( M/ a' H/ p2 u  z; F" e/ C$ ?( {: K利用单元数组可以创建多个函数的句柄,例如. {+ T& D! U/ F6 d, u
f={@sin @cos}) _+ u  w7 B$ Y/ C  B$ g
f{1}(pi/2) %计算sin(pi/2), I- Y. X( ]. @4 q# Z6 z
f{2}(pi) %计算cos(pi)
2 s+ U/ |$ C8 e) x& Z函数句柄的另一个重要特征是可以用来表示子函数、私有函数和嵌套函数。
6 d4 Z  \% A  y: q! q$ L9 hMatlab 7以后,建议以匿名函数取代在线函数!!!
1 X/ [, |1 c) T$ F" `5 s& ]( S! ~在创建匿名函数时,Matlab记录了关于函数的信息,当使用句柄调用该函数的时候,Matlab不再进行搜索,而是立即执行该函数,极大提高了效率。
7 D5 c: E$ c, q. l0 k( I! q

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-4 05:05 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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