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

MATLAB如何定义函数

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
自定义函数的途径:( @+ t- J+ ]  i4 N: o' b0 U  }
M文件函数(M file function)$ L5 n2 @9 \* n4 F
在线函数(Inline Function)
# J8 `9 Q1 h$ n; q2 X* v% |9 d1 ~2 P匿名函数(Anonymous Function)
) P7 y2 q* ~4 h# J6 L1.M文件函数
3 n' _( k& P4 Q- \9 p$ r范例
- k* C+ S& A0 e0 R0 v7 xfunction c=myadd(a,b)* w% q% m% j  f( o5 D. F
%这里可以写函数的使用说明,前面以%开头6 w) k4 ^+ }8 U$ X. b
%在工作区中,help myadd将显示此处的说明4 x1 ], D7 m( Y
c=a+b;
& m* a- x& x1 _% D: T5 b( J%end %非必须的
: o/ Z9 V. y- q第一行function告诉Matlab这是一个函数,a,b是输入,c是输出,myadd是函数名。以m文件定义的函数必须保存为函数名的形式,上例中,函数应保存为myadd.m。要使用myadd函数,该函数必须在Matlab的搜索路径中。
; P7 l( E9 K; T& w: @调用方式:/ n, [9 M# f$ a. q# s
在Matlab命令符后输入
' E+ S8 M6 g1 e, \/ f3 e5 h7 Ta=1;b=2;! H( |7 g7 `- y
c=myadd(a,b)) D1 ~; s: _7 ?+ C* w( J
关于m文件定义函数还有许多的说明,暂时略去。。。( c' N* h6 B7 W% E% w
2.在线函数(Inline Function)
1 O- k* R3 C. P. P2 z! r通常作为参数传递给另外一个函数。比如fminsearch,lsqcurvefit等函数需要以函数作为参数。
8 ~& i" J! C9 y' Q3 r9 H- T在线函数从字符串表达式创建函数,例如:
  K% A' e: D0 m( B, G9 @f=inline('x.^2','x');5 J+ H, s# c( f& H. A, m0 ?6 G
创建了函数f(x)=x^2。要计算f(3),在工作区输入f(3)即可。f([2 3 4])计算在x=2 3 4时的值
: ^. m5 O5 K5 ?( i- t( |2 `f=inline('x+y','x','y')
8 p: c0 M0 G8 K/ I2 B$ ?, E8 W创建了二元函数f(x,y)=x+y,工作区输入f(2,3)计算2+3,等同于feval_r(f,2,3)。' N$ u1 [# r2 `- E$ G
3.匿名函数(Anonymous Function)
) R! ]- U& [2 {3 @9 P匿名函数使用函数句柄来表示匿名函数,定义形式为
. D/ y$ G1 O# R& p函数句柄=@(变量名) 函数表达式8 X$ `' y/ x. u8 g9 z
例如:4 d3 p; F8 ?' `; e2 B5 v$ c: s
f=@(x) x.^2
4 s$ ~9 s# g1 @+ t5 t定义了函数f(x)=x^2,f(2)计算在x=2处的值。
" g3 J1 y3 d: {0 P9 S* V匿名函数可以调用Matlab函数,也可以使用工作区中存在的变量,例如
4 o+ `. b" I% Q, d1 a2 e. |a=2;
. `3 K9 k! G* O$ ]+ O) ~( ^f=@(x) x.^2+a
' y: g- m. n, f, Z& c8 {. `) g9 Mf(2) %计算时引用了变量a
! Y4 S' N" Q+ y8 I. x! ^a=0;* b) k5 [/ A  Y* _( p" N3 u% X' v# J
f(2) %仍然引用的是a=2# W$ j  ^8 E; i  W+ U) p
匿名函数也可以由Matlab的内置函数或M文件函数创建,例如% h/ L$ R/ b$ d) |
f=@sin %f(x)=sin(x)
6 F8 V# L/ N# T. i6 D& r5 A4 \9 _f(pi/2) %sin(pi/2)
; h7 @$ B+ n  M0 Ifunctions(f) %查看函数信息
7 ^* _; r) D, m( p7 c8 x; l( [5 x利用单元数组可以创建多个函数的句柄,例如, I0 _6 w7 W8 I7 r
f={@sin @cos}
7 @, K+ p1 U) v: z! L  ~f{1}(pi/2) %计算sin(pi/2)
" U% T' x3 L; |  Jf{2}(pi) %计算cos(pi)
+ N0 A* J( x! Z) a) U/ v$ d6 D函数句柄的另一个重要特征是可以用来表示子函数、私有函数和嵌套函数。
  J) G0 p3 H: a' F; t. _0 L, EMatlab 7以后,建议以匿名函数取代在线函数!!!
( T7 u+ O* G6 F" T7 r. a1 N在创建匿名函数时,Matlab记录了关于函数的信息,当使用句柄调用该函数的时候,Matlab不再进行搜索,而是立即执行该函数,极大提高了效率。0 J0 W/ ?0 f/ V* ^- X

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-15 22:22 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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