PDA

查看完整版本 : [MATLAB基础] 创建的function 出问题,可以帮忙看一下么?


cathy
2012-09-27, 02:57
创建的function 出问题,可以帮忙看一下么?因为是初学者可能会有愚蠢的错误,不好意思
这是estimation by likelihood function,最后需要maximiser 的

vt需要它的滞后项不知道我这样用可不可以
复制如下:
function likeli = likelihood(parametre,St,t)

% define likelihood function,'parametre' is variable that we want to estimate from data St and t
% define parametre which have 17 elements
p1=parametre(1);p2=parametre(2);p3=parametre(3);p4=parametre(4);p5=parametre(5);p6=parametre(6);
p7=parametre(7);p8=parametre(8);p9=parametre(9);p10=parametre(10);p11=parametre(11);p12=parametre(12);
p13=parametre(13);p14=parametre(14);p15=parametre(15);p16=parametre(16);p17=parametre(17);

%Define two major variables (ft and vt) that would be used in the likelihood function

%1 define the ft:seasonal which would be a vector with length of St

ft=p13+p9*cos(2*pi*2*St/260)+p10*sin(2*pi*2*t/260)+p14*cos(2*pi*2*t/260)+p15*sin(2*pi*2*t/260)+p11*cos(2*pi*2*t/5)+p12*sin(2*pi*2*t/5)+p16*cos(2*pi*2*t/5)+p17*sin(2*pi*2*t/5);

%2 define the vt: volatiltiy which would be a vector with length of St

for i=3:lenght(St);
vt(1)=0.5
vt(i)=p6+p7*(St(i-1)+St(i-2)*(p1-1)-p1*p2)^2+p8*v(i-1);
end

%define the likelihood function
for i=2:lenght(St);
Lt(i)=(1-p5)*exp(-((St(i)-ft(i))-(1-p1)*(St(i-1)-ft(i-1))-p1*p2)^2/(2*vt(i)))/(2*pi*vt(i))^0.5+(p5)*exp(-((St(i)-ft(i))-(1-p3)*(St(i-1)-ft(i-1))-p1*p2-p3)^2/(2*(vt(i)+p4^2)))/(2*pi*(vt(i)+p4^2))^0.5
end

%-(sum of likelihood function)
likeli=-sum(Lt)

end


谢谢了!!急用

cathy
2012-09-27, 15:47
显示的是 在p1=parameter那一行: not enough inputs