mochi305 发表于 2009-7-18 19:13

function handle的使用

我最近碰到一个问题不能解决,希望大家帮忙看下!

问题如下:

function ST=teststat(X,h,coef)% X是100*1随机数,h=1.1,coef=-0.9
T=100;
re=X(2:T)-coef*X(1:(T-1));
syms x,
for t=1:(T-1)
    r(t)=(x-X(t))/h;
   KH(t)=exp(-r(t)^2)/sqrt(2*pi)/h;
    S(t)=KH(t)*re(t);
end
S=vpa(simple(S));
MEAN=vpa(mean(S))
g=vpa(simple(MEAN^2))
ME = @(x) g
ST=simprl(ME,-5,5,500)

最后一行调用了另一个M文件,我试了下ME 只能是显示表达式才行,ME是function handle, 请问如何得到显示表达式或如何解决上述问题?

function s=simprl(f,a,b,M)
h=(b-a)/(2*M);s1=0;s2=0;
% f = @(x) x.^2;
for i=1:M
    x=a+h*(2*i-1);
    s1=s1+feval(f,x);
end
for i=1:(M-1)
    x=a+h*2*i;
    s2=s2+feval(f,x);
end
s=h*(feval(f,a)+feval(f,b)+4*s1+2*s2)/3;
其实这个问题就是如何把符号函数转化为函数句柄,请大家帮忙看下

[ 本帖最后由 ChaChing 于 2009-7-20 13:19 编辑 ]

rocwoods 发表于 2009-7-20 10:03

如果你的MATLAB是2009a的话help str2func函数
否则给你个例子
syms x
y = x^2+log(sqrt(x));
fun = eval(['@(x)' char(y)])

mochi305 发表于 2009-7-21 12:22

回复 沙发 rocwoods 的帖子

非常感谢,我试了下,可以计算结果,再次表示感谢
页: [1]
查看完整版本: function handle的使用