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

MATLAB如何定义函数

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
自定义函数的途径:
! X9 r# W# I( Q* P' D) |M文件函数(M file function)% v1 \; X* b' H) p9 k
在线函数(Inline Function)
/ k5 ^' q( A: k9 S4 J/ Y" F' x4 r; K4 h匿名函数(Anonymous Function)$ \6 c8 I7 {* u$ p7 k/ S
1.M文件函数
* V' q/ p0 y( I; S  G1 h4 L范例
: |. Y# L! i5 R+ Q' a: ?, k8 Qfunction c=myadd(a,b)
+ q3 D  h4 j$ G7 \/ M%这里可以写函数的使用说明,前面以%开头
4 R: r5 ^% v1 F( a%在工作区中,help myadd将显示此处的说明; @0 S  M: Y$ a
c=a+b;/ P/ K3 e$ O* B7 p; [) l4 r
%end %非必须的
: [1 z8 a: ^2 e$ {3 l* F  F) m- f& y5 x第一行function告诉Matlab这是一个函数,a,b是输入,c是输出,myadd是函数名。以m文件定义的函数必须保存为函数名的形式,上例中,函数应保存为myadd.m。要使用myadd函数,该函数必须在Matlab的搜索路径中。
( v) c$ h3 g8 ]) @1 L/ a调用方式:
4 F; y2 a# M* V, K& U9 D+ M在Matlab命令符后输入) D: ~  {+ u0 K/ g# {
a=1;b=2;
# B+ D' c9 R: W% i3 @- W+ |c=myadd(a,b)9 j- _+ P5 v: Q$ U+ K
关于m文件定义函数还有许多的说明,暂时略去。。。
+ [( ^7 M" C$ ], U2 j9 N2.在线函数(Inline Function)  f7 T" K+ E8 W/ k
通常作为参数传递给另外一个函数。比如fminsearch,lsqcurvefit等函数需要以函数作为参数。
9 ]; ]  I: Q/ \6 O在线函数从字符串表达式创建函数,例如:$ m8 h; d$ D  U  {+ c# h, i
f=inline('x.^2','x');
! x& L1 {0 L6 M7 b+ Y2 J创建了函数f(x)=x^2。要计算f(3),在工作区输入f(3)即可。f([2 3 4])计算在x=2 3 4时的值
' R7 _# l, {- O! R3 M6 T- of=inline('x+y','x','y')
( H, [' i$ W' q/ \1 h' j2 }; @创建了二元函数f(x,y)=x+y,工作区输入f(2,3)计算2+3,等同于feval_r(f,2,3)。" T# {4 L" M4 V, a# ]! n; m
3.匿名函数(Anonymous Function)" H7 d5 i8 T+ B. ~, m; f' R! v# S
匿名函数使用函数句柄来表示匿名函数,定义形式为& t$ N1 R7 U2 F& g
函数句柄=@(变量名) 函数表达式
# D5 C2 m+ _/ Z例如:
8 [4 [& @% p3 \* k- q$ af=@(x) x.^2
) K2 L2 v5 i& p' V$ Q定义了函数f(x)=x^2,f(2)计算在x=2处的值。) u3 L* U5 p% ~6 x, ~
匿名函数可以调用Matlab函数,也可以使用工作区中存在的变量,例如
( X$ n$ j  W- \& ^! @! _# [a=2;
5 ^8 O- Z. v& k8 |f=@(x) x.^2+a; W  D6 M6 [9 b
f(2) %计算时引用了变量a
: K. L& O& J. d; ya=0;0 ?2 n0 {0 i/ c; B9 p
f(2) %仍然引用的是a=2
' R6 R% P- @9 x6 C9 K  g/ P% c& k6 ?- X匿名函数也可以由Matlab的内置函数或M文件函数创建,例如! m; _4 }. a; M: [- Y% o
f=@sin %f(x)=sin(x)9 h6 o; l4 ~' Q1 P$ O3 v7 L
f(pi/2) %sin(pi/2)
+ D* m* Z2 p" ?0 E1 _+ dfunctions(f) %查看函数信息
! y: [$ _* f. ~7 {, F利用单元数组可以创建多个函数的句柄,例如6 B! S! v& d* T* s* S
f={@sin @cos}, c/ L8 A  M# p/ k/ i& `
f{1}(pi/2) %计算sin(pi/2); I1 ]4 s+ g* A9 J- }
f{2}(pi) %计算cos(pi)/ f; T/ p/ r) K6 H
函数句柄的另一个重要特征是可以用来表示子函数、私有函数和嵌套函数。2 w+ @7 {6 a9 |; V  `$ O. W
Matlab 7以后,建议以匿名函数取代在线函数!!!
0 I0 _3 e6 P; p# Y  q在创建匿名函数时,Matlab记录了关于函数的信息,当使用句柄调用该函数的时候,Matlab不再进行搜索,而是立即执行该函数,极大提高了效率。2 v- J  J9 l! ~$ i. e- l5 ^% z

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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