http://vib.hit.edu.cn/vibbbs/index.asp
http://vib.hit.edu.cn/vibbbs/dispbbs.asp?BoardID=35&replyID=732&id=732&skin=0
符号运算
许多Matlab函数(特别是数值计算方面的)可以函数句柄(function handle)或内联对象(inline object)作为参数。我们以quad函数为例,这个函数使用Simpson算法求函数的数值积分。它的一种调用形式是:
quad(fun, a, b)
其中,fun可以是指向被积函数的函数句柄,或者含有被积函数的内联对象;a和b分别是被积区间的上、下限。考虑以下积分:
使用函数句柄的方法:
% 将下面到"% EOF"的代码保存为f.m
function y = f(x)
y = sin(x) ./ x;
% EOF
quad(@f, 1, 2)
ans =
0.6593
使用内联对象的方法:
quad( inline( 'sin(x)./x' )), 1, 2 )
ans =
0.6593
由于使用内联对象不需要另外建立m文件,所以比较方便,建议使用这种方法。
更加常见的应用是被积函数有不确定的参数,例如:
其中参数a,b,K运行时确定,这时,使用函数句柄将显得很麻烦,可以用以下的方法:
a = rand;
b = rand + 1;
K = rand;
y = subs('sin(K*x)/x', 'K', sym(K, 'd') )
quad( inline(vectorize(char(y))), a, b)
y =
sin(.79193703742703536185842949635116*x)/x
ans =
0.8188
当然,由于a,b,K是随机数,结果是不确定的。
出自:MATLAB使用技巧 http://vib.hit.edu.cn/vibbbs/dispbbs.asp?boardID=35&ID=1464