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

MATLAB如何定义函数

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
自定义函数的途径:
' n3 w6 H7 p" v, HM文件函数(M file function)
; n# @6 b7 I/ F/ |在线函数(Inline Function)5 H% C% Q! T* C( [6 A  \" H/ m
匿名函数(Anonymous Function)
$ q( D  c; Q4 f+ w5 F- q1 Y1.M文件函数
7 O; i. J8 t+ G7 r) d范例
8 }, [% Z0 B( {' Xfunction c=myadd(a,b)
* k6 g! s1 e8 j: j7 `2 w1 M6 {2 F%这里可以写函数的使用说明,前面以%开头; v& O5 a, y2 y2 m6 m' d7 ~
%在工作区中,help myadd将显示此处的说明; M; n' I% ^2 v) L; T3 Z0 j% v
c=a+b;* E' S, P) ~% Y7 D/ M/ j
%end %非必须的
; {7 ?- {* ~- n$ `6 Y% L$ v0 z第一行function告诉Matlab这是一个函数,a,b是输入,c是输出,myadd是函数名。以m文件定义的函数必须保存为函数名的形式,上例中,函数应保存为myadd.m。要使用myadd函数,该函数必须在Matlab的搜索路径中。
* s1 \$ g4 X: I/ U) @% a3 D调用方式:* L4 k+ R* k- j5 q2 B  m: C# l
在Matlab命令符后输入% f; n1 ]) O$ a% F/ @3 r
a=1;b=2;/ l/ \1 `# W9 H# J) P' p
c=myadd(a,b)! E4 e$ m5 V( P( |% b; D
关于m文件定义函数还有许多的说明,暂时略去。。。
. k, a1 d9 v( w2.在线函数(Inline Function)
# S. V. }0 n. o( \通常作为参数传递给另外一个函数。比如fminsearch,lsqcurvefit等函数需要以函数作为参数。/ I; x) B' i- T1 d7 P# f. Y
在线函数从字符串表达式创建函数,例如:
; ]1 E. v  w: N0 af=inline('x.^2','x');
3 u6 U0 |& A. m; `/ j' S# u8 I创建了函数f(x)=x^2。要计算f(3),在工作区输入f(3)即可。f([2 3 4])计算在x=2 3 4时的值
3 d+ {; |+ |4 Gf=inline('x+y','x','y')0 e- f$ b6 U  x: i' M# q) P1 e
创建了二元函数f(x,y)=x+y,工作区输入f(2,3)计算2+3,等同于feval_r(f,2,3)。
! w+ O4 a. y' b* l4 i1 s- B3.匿名函数(Anonymous Function)
6 |- G, v  B$ t% y4 v: r& }6 A匿名函数使用函数句柄来表示匿名函数,定义形式为
( {) L! @6 J- m" W( d/ O' ]. B函数句柄=@(变量名) 函数表达式% v( s1 Z' `9 T! l0 l/ x# k% y6 o
例如:
' I- V3 M$ c. Yf=@(x) x.^2+ T2 N- z1 t; @$ p$ O( P" w/ w3 d- K+ n
定义了函数f(x)=x^2,f(2)计算在x=2处的值。- N6 ~" R; L! M2 u& v! w$ d
匿名函数可以调用Matlab函数,也可以使用工作区中存在的变量,例如* b' u" ~, X, K' n
a=2;" N) n$ a3 R- B/ y: E5 B, y
f=@(x) x.^2+a7 U$ g; t$ f1 o+ @$ n! _; o
f(2) %计算时引用了变量a
, j* e% _4 Z0 g. K5 ja=0;9 P  V5 v2 C: C  O" V# q" P
f(2) %仍然引用的是a=2
, l$ b7 }  O9 Q匿名函数也可以由Matlab的内置函数或M文件函数创建,例如/ y8 ^7 m0 u3 d- @% F5 x  |' R
f=@sin %f(x)=sin(x)% n# q% W; M7 ~/ n9 Y$ ?
f(pi/2) %sin(pi/2)! @/ ?! q1 v' w/ C
functions(f) %查看函数信息
; ~) A0 ?7 S) [7 }" I- i' g利用单元数组可以创建多个函数的句柄,例如* S9 y8 h. m8 P2 l" p
f={@sin @cos}
$ r# {( h2 x, c& c/ ]5 _f{1}(pi/2) %计算sin(pi/2)2 I4 u3 J! i$ ~/ g( w  y
f{2}(pi) %计算cos(pi)8 D7 V  u+ |- ^% v5 [
函数句柄的另一个重要特征是可以用来表示子函数、私有函数和嵌套函数。
- u( O0 ^, P4 }6 HMatlab 7以后,建议以匿名函数取代在线函数!!!  _+ M! e. b* H9 l- L/ B% @, }
在创建匿名函数时,Matlab记录了关于函数的信息,当使用句柄调用该函数的时候,Matlab不再进行搜索,而是立即执行该函数,极大提高了效率。3 ^5 z% N: d9 Y

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-27 21:09 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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