EDA365电子论坛网
标题:
MATLAB如何定义函数
[打印本页]
作者:
ulppknot
时间:
2020-8-27 17:34
标题:
MATLAB如何定义函数
自定义函数的途径:
7 w! v0 X+ E- z, p# ~
M文件函数(M file function)
3 f8 v8 ~5 Q4 d7 O) B, B
在线函数(Inline Function)
5 i4 s; a: P$ K; k# o0 ~6 z+ z( I
匿名函数(Anonymous Function)
6 l/ k3 w- M) W! S# X
1.M文件函数
$ W% f' {6 Z3 t0 g) e4 q
范例
4 }: {' M' b; K3 Y, H6 s) r0 P+ j, x: h
function c=myadd(a,b)
6 d" D* L" [# \6 ]7 b; d$ n) k
%这里可以写函数的使用说明,前面以%开头
7 A7 V. q$ Y! c
%在工作区中,help myadd将显示此处的说明
: c! d# E) W/ b7 T6 d* F
c=a+b;
6 I1 h, U/ }5 y% W
%end %非必须的
. z$ K' y4 \; |8 ?; W' E/ {7 _
第一行function告诉Matlab这是一个函数,a,b是输入,c是输出,myadd是函数名。以m文件定义的函数必须保存为函数名的形式,上例中,函数应保存为myadd.m。要使用myadd函数,该函数必须在Matlab的搜索路径中。
2 |2 Q* m' z7 R- ~$ ^
调用方式:
3 k& H0 X$ h% R/ ]. }6 ` l
在Matlab命令符后输入
" M2 X9 ?5 W4 v4 j3 a0 a7 F8 a3 `
a=1;b=2;
. x( g$ g7 o4 Y" E! ~% o
c=myadd(a,b)
( n7 V; a) X2 T4 |
关于m文件定义函数还有许多的说明,暂时略去。。。
0 f! ?2 G6 I! R& t
2.在线函数(Inline Function)
- w$ I2 ~) A) F. N* b6 Y) X# P
通常作为参数传递给另外一个函数。比如fminsearch,lsqcurvefit等函数需要以函数作为参数。
, `4 y% W2 v4 S, c: w
在线函数从字符串表达式创建函数,例如:
. m4 Z% j) d/ f
f=inline('x.^2','x');
( ]' a0 Q0 ~# x
创建了函数f(x)=x^2。要计算f(3),在工作区输入f(3)即可。f([2 3 4])计算在x=2 3 4时的值
2 m+ M: z% A8 v
f=inline('x+y','x','y')
( Z2 k# y! Y' w3 R: k4 ?. }6 Q- H
创建了二元函数f(x,y)=x+y,工作区输入f(2,3)计算2+3,等同于feval_r(f,2,3)。
7 E$ f# G- A9 ~6 S
3.匿名函数(Anonymous Function)
- @5 \# ?* l- c9 L/ _
匿名函数使用函数句柄来表示匿名函数,定义形式为
* d; d4 A4 E& Z8 r, `
函数句柄=@(变量名) 函数表达式
0 h. p% i( Y' G
例如:
) J, `4 P6 g) M
f=@(x) x.^2
* \& F, u" @: t* i
定义了函数f(x)=x^2,f(2)计算在x=2处的值。
# _- M' `6 j& t" _ G j* [( U
匿名函数可以调用Matlab函数,也可以使用工作区中存在的变量,例如
9 y% t, {( T$ Y8 W* j1 U/ \
a=2;
; E0 a) A3 a0 p) B
f=@(x) x.^2+a
}7 G! h- u I4 @
f(2) %计算时引用了变量a
3 L7 ~( Q L1 J5 R! Q) X" ?
a=0;
# B2 M6 v) r+ L; L. z m d" \* h
f(2) %仍然引用的是a=2
9 S9 F: _3 D, D* U( q! @+ z
匿名函数也可以由Matlab的内置函数或M文件函数创建,例如
+ v$ S u. u$ y E
f=@sin %f(x)=sin(x)
- j1 y$ t5 Y- \- ~1 U5 X& d" A
f(pi/2) %sin(pi/2)
0 v6 Y5 q L* k7 [8 p
functions(f) %查看函数信息
0 @) c$ S7 X* v4 Y+ I* R
利用单元数组可以创建多个函数的句柄,例如
8 ~: K3 C1 T# W! E: i
f={@sin @cos}
/ @7 j0 v7 {, R7 `* m
f{1}(pi/2) %计算sin(pi/2)
2 f- y, y# ~" R' K
f{2}(pi) %计算cos(pi)
# f% H8 O3 v* G7 C' u
函数句柄的另一个重要特征是可以用来表示子函数、私有函数和嵌套函数。
3 N- k$ P* {" w; m
Matlab 7以后,建议以匿名函数取代在线函数!!!
8 |; f' {: g6 p, `" G& h
在创建匿名函数时,Matlab记录了关于函数的信息,当使用句柄调用该函数的时候,Matlab不再进行搜索,而是立即执行该函数,极大提高了效率。
; H4 \, ]1 i; i8 l, y8 ~, Y' @9 E5 S
作者:
xiaogegepcb
时间:
2020-8-27 18:21
MATLAB如何定义函数
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2