Matlab
函数进阶:
使用匿名函数
(Anonymous Function)
和内嵌函数
(Nested Function)
处理多变量传递问题
(Matlab 7.0
以上
)
问题:
有一个多变量函数
f
(
a
b
c
x
)
,
现需要分别在
a
=
a
0
b
=
b
0
c
=
c
0
和
a
=
a
1
b
=
b
1
c
=
c
1
的条件下对
f
(
a
b
c
x
)
进行某一操作。
此类问题常在数值积分时出现。
解决方案:
1
.使用全局变量
可在主调函数和被调函数中分别将
a,b,c
声明为全局变量
(
global
a b c
)
,这时
f
通过全局
变量传递
abc,
定义时可以只有一个参数
x
。
2
.使用
anonymous function
3
.使用
nested function
下面举例说明
anonymous function
和
nested function
的使用。
例:
对任意二次多项式
ax
2
+bx+c
进行数值积分
(此处显然可以解析得到,此例使用
anonymous
function
做演示)
解:(
1
)使用匿名函数
编写文件
intpoly2.m
如下
function
y_int=intpoly2
(
a,b,c
)
y_int=quad
(
@
(
x
)(
poly2
(
a,b,c,x
))
,
0
,
1
)
;
%
此处利用
matlab
内部函
%
数
quad(fun, x0,xt)
进行积分,
%
被积函数
fun
我们使用匿名函
%
数
"@(x)(poly2(a,b,c,x))"
以便
%
将自变量限制为
x.