声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2029|回复: 2

[综合讨论] function handle的使用

[复制链接]
发表于 2009-7-18 19:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

问题如下:

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 编辑 ]
回复
分享到:

使用道具 举报

发表于 2009-7-20 10:03 | 显示全部楼层
如果你的MATLAB是2009a的话help str2func函数
否则给你个例子

  1. syms x
  2. y = x^2+log(sqrt(x));
  3. fun = eval(['@(x)' char(y)])
复制代码

评分

1

查看全部评分

 楼主| 发表于 2009-7-21 12:22 | 显示全部楼层

回复 沙发 rocwoods 的帖子

非常感谢,我试了下,可以计算结果,再次表示感谢
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-14 17:17 , Processed in 0.069747 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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