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

MATLAB如何定义函数

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
自定义函数的途径:9 r# T4 }+ H0 Y) f8 b
M文件函数(M file function)" p: c; T% |  X' D% R
在线函数(Inline Function)% Q- L* F: m1 I7 y1 ?( ~7 L
匿名函数(Anonymous Function)
: f% v' Q1 j' F: \0 Z5 Q1.M文件函数
2 |$ n/ q$ k5 j1 A3 D范例
: o+ l: {1 y* v0 ]function c=myadd(a,b)
  t' x) p5 @( m8 ^5 [% u%这里可以写函数的使用说明,前面以%开头" H2 S* ]0 T1 U2 d; ~5 Y; W
%在工作区中,help myadd将显示此处的说明
7 Q" D$ v$ s4 z, }+ v8 F$ `' ec=a+b;
0 `+ ~" \( ?- z' B%end %非必须的' ?( C5 I$ G8 y  G5 P- b: s9 c
第一行function告诉Matlab这是一个函数,a,b是输入,c是输出,myadd是函数名。以m文件定义的函数必须保存为函数名的形式,上例中,函数应保存为myadd.m。要使用myadd函数,该函数必须在Matlab的搜索路径中。
& n& i% U4 v5 \3 L& ]7 Q调用方式:4 _  w/ K8 E6 i3 N# M- e0 B6 N
在Matlab命令符后输入
& [9 [+ h" X" |9 {  ra=1;b=2;: j7 d5 A: ~/ i6 e- N. s
c=myadd(a,b)3 {  L, }+ t' Z+ O9 C$ m% v
关于m文件定义函数还有许多的说明,暂时略去。。。. E# h6 R4 I! D) Z3 x  K1 t  y( \- c
2.在线函数(Inline Function)6 k% }) u6 `1 Z
通常作为参数传递给另外一个函数。比如fminsearch,lsqcurvefit等函数需要以函数作为参数。
) b; x5 Z! W' d  O6 j  A在线函数从字符串表达式创建函数,例如:6 \8 |9 i+ `% w1 X6 w
f=inline('x.^2','x');
6 p' ^. O' K0 m, t2 Y* g创建了函数f(x)=x^2。要计算f(3),在工作区输入f(3)即可。f([2 3 4])计算在x=2 3 4时的值
7 k6 A; q3 f; b% _) k: s8 _f=inline('x+y','x','y'). x8 J" _( O: }; T& n: S
创建了二元函数f(x,y)=x+y,工作区输入f(2,3)计算2+3,等同于feval_r(f,2,3)。. [' U( H# x+ [/ q" I% }
3.匿名函数(Anonymous Function)
" i. f8 N+ c3 Q& w/ G" ]匿名函数使用函数句柄来表示匿名函数,定义形式为
, f1 ]& G8 K% O" M函数句柄=@(变量名) 函数表达式
4 T7 N6 ?6 y; s  p4 n; {& I例如:0 g( u$ `' ]6 W+ |; I; A
f=@(x) x.^21 t8 J* ^5 p. c
定义了函数f(x)=x^2,f(2)计算在x=2处的值。% F  K  Z7 z4 f
匿名函数可以调用Matlab函数,也可以使用工作区中存在的变量,例如
) B  Y- x; |; Ka=2;2 X, r0 M6 o' s$ A" Y* D! g1 [
f=@(x) x.^2+a
5 c7 n$ k8 C+ l, S( ff(2) %计算时引用了变量a
7 N/ }+ T" a9 V6 E9 M8 O3 J. l9 }a=0;  R  ^( V# `! f! S6 R- N* r: S
f(2) %仍然引用的是a=2
3 J4 O1 b6 D, J: ~匿名函数也可以由Matlab的内置函数或M文件函数创建,例如
# G; \  E/ M4 \( I. Kf=@sin %f(x)=sin(x)0 n8 `. }6 ^- S3 l1 a5 S
f(pi/2) %sin(pi/2)
+ W, k9 E5 B. L8 C2 Kfunctions(f) %查看函数信息6 K0 `. g* r0 W5 A( a9 ^0 j; H
利用单元数组可以创建多个函数的句柄,例如
" L$ C  I; |+ W6 h7 o7 O: if={@sin @cos}3 L; w. n$ n3 U* k2 ?0 K7 S5 m
f{1}(pi/2) %计算sin(pi/2)4 L' u3 v, Y0 i4 I( ?3 F" t
f{2}(pi) %计算cos(pi)
2 u! S' B, {/ v3 H函数句柄的另一个重要特征是可以用来表示子函数、私有函数和嵌套函数。4 L; y* ]' \% F4 d* _
Matlab 7以后,建议以匿名函数取代在线函数!!!* V- V$ ?8 I+ ]  y5 s+ o/ ?
在创建匿名函数时,Matlab记录了关于函数的信息,当使用句柄调用该函数的时候,Matlab不再进行搜索,而是立即执行该函数,极大提高了效率。) S! m# P; Q4 u1 r

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 20:33 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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