振动论坛---MATLAB

来源:互联网 发布:如何防止sql注入漏洞 编辑:程序博客网 时间:2024/04/28 14:15

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

原创粉丝点击