24小时热门版块排行榜    

查看: 1638  |  回复: 11
本帖产生 1 个 计算强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

suyan200326

新虫 (初入文坛)

[求助] 求Matlab 高手改进程序 可付费

用MATLAB自己写了个MLE 估计, 由于数据量比较大
发现如果完全不出错跑完该程序需要60天, 求高手帮忙改进。
抱歉 目前金币紧缺 如果有高手能解决问题  可付费 先谢谢啦   


[ Last edited by suyan200326 on 2012-7-13 at 16:20 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

suyan200326

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by onesupeng at 2012-07-17 08:24:25
你这个用matlab没有太大的优化空间,最多是把1.1中的一些项手动合并一下等等。比如singma^2,因为用到几次,所以公式之前用个变量存下来之后用。

如果是我来做,我选择用Fortran或者C,优化编译或者并行一下,很 ...

谢谢你的热心, 但我不会Fortran和C,如果你愿意的话可以帮我试试吗,只要能比较有效的计算出来,可以有偿
3楼2012-07-19 18:40:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 12 个回答

onesupeng

金虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★
fegg7502: 金币+5, 计算强帖+1, 应助指数+1, 多谢指导 2012-07-23 18:27:24
你这个用matlab没有太大的优化空间,最多是把1.1中的一些项手动合并一下等等。比如singma^2,因为用到几次,所以公式之前用个变量存下来之后用。

如果是我来做,我选择用Fortran或者C,优化编译或者并行一下,很快
长期招收博士生,参见http://fsl-unsw.com
2楼2012-07-17 08:24:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dbb627

荣誉版主 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★
fegg7502: 金币+5, 应助指数+1, 多谢指导 2012-07-23 18:27:38
你得机器配置怎么样,你的计算,可不可以考虑分解任务并行计算。把你的代码附上看看
最近买了个工作站,一些计算我试了下我的机器并行可以提速7-8倍。如果不是太复杂,可以帮你算算
The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
4楼2012-07-19 21:24:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

suyan200326

新虫 (初入文坛)


fegg7502: 金币+1, 多谢交流 2012-07-23 18:27:51
引用回帖:
4楼: Originally posted by dbb627 at 2012-07-19 21:24:22
你得机器配置怎么样,你的计算,可不可以考虑分解任务并行计算。把你的代码附上看看
最近买了个工作站,一些计算我试了下我的机器并行可以提速7-8倍。如果不是太复杂,可以帮你算算

是在是太感激你了,最近被这个问题折磨得已经抑郁了。
机器配置很一般  学校的电脑
2.13GH,2.99GB

目前CODE 如下:

/*likelihood function*/
function llf=likelihoodfunction(theta, ETS, TS,DS,V0)

%global n ETS TS DS;
mu=theta(1);
sigma=theta(2);

n=length(ETS);

%V0=10;
lf=0;
for i=1:n
  Et=ETS(i);
  t=TS(i);
  D=DS(i);
  %Vt=invoptionprice(Et,D,sigma,t)
  Vt=fsolve(@(Vt) Vt*normcdf((log(Vt/D)+0.5*sigma^2*t)/(sigma*t^0.5))-D*normcdf((log(Vt/D)+0.5*sigma^2*t)/(sigma*t^0.5)-sigma*t^0.5)-Et, V0);
  dt=log(Vt/D)+0.5*sigma^2*t;  
  if i>1
    f=-0.5*log(2*pi)-0.5*log(sigma^2)-log(Vt)-log(normcdf(dt))-0.5/sigma^2*(log(Vt/Vt_1)-mu)^2;
    lf=lf+f;
  end
  Vt_1=Vt;
end

llf=-lf;


/*MLE*/
Data=xlsread('data1.xls')
DS=Data(:,1);
ETS=Data(:,2);

LENGTH=length(ETS);

TS=Data(:,3);
%TS=ones(LENGTH,1);

theta0=[0,0.1];
V0=10000;
options = optimset('Display','iter','MaxIter',(1e+003),'MaxFunEvals',1e+4,'TolFun',10^(-10),'TolX',10^(-10));

[theta,fval]=fminsearch(@(theta) likelihoodfunction(theta,ETS, TS,DS,V0) , theta0,options);
   
n=length(ETS);
mu=theta(1);
sigma=theta(2);

VS=[];
for i=1:n
  Et=ETS(i);
  t=TS(i);
  D=DS(i);

  Vt=fsolve(@(Vt) Vt*normcdf((log(Vt/D)+0.5*sigma^2*t)/(sigma*t^0.5))-D*normcdf((log(Vt/D)+0.5*sigma^2*t)/(sigma*t^0.5)-sigma*t^0.5)-Et, V0);
  VS=[VS,Vt];
end
5楼2012-07-19 23:34:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见