Re: [問題] 請問哪裡有錯(函數)?已回收

看板MATLAB作者 (^^)時間16年前 (2009/03/17 19:14), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《qwer098 (^^)》之銘言: : 這是後來修改的.. : %m.file 目標函數------------------ : function f=myfun(x,y) : for i=3:300 : m(i)=y(i)-x(1)-x(2).*y(i-1)-x(3).*y(i-2); : n(i)=y(i).*y(i-1)-x(1).*y(i-1)-x(2).*y(i-1).^2-x(3).*y(i-1).*y(i-2); : o(i)=y(i).*y(i-2)-x(1).*y(i-2)-x(2).*y(i-1).*y(i-2)-x(3).*y(i-2).^2; : f(i)=2.*log(1+x(4).*m(i)+x(5).*n(i)+x(6).*o(i)); : end : f=sum(f); : %m.file 限制式--------------------- : function [c ceq]=mycon(x,y) : for i=3:300 : m(i)=y(i)-x(1)-x(2).*y(i-1)-x(3).*y(i-2); : n(i)=y(i).*y(i-1)-x(1).*y(i-1)-x(2).*y(i-1).^2-x(3).*y(i-1).*y(i-2); : o(i)=y(i).*y(i-2)-x(1).*y(i-2)-x(2).*y(i-1).*y(i-2)-x(3).*y(i-2).^2; : p(i)=(1+x(4).*m(i)+x(5).*n(i)+x(6).*o(i)); : end : c=[]; : ceq(1)=sum(m(3:300)./p(3:300)); : ceq(2)=sum(n(3:300)./p(3:300)); : ceq(3)=sum(o(3:300)./p(3:300)); : ----------------------------------------------- : spec = garchset('C',0,'K',0.05,'ARCH',[0.4 0.15]); : [a,s,o] = garchsim(spec,300); : y=a.^2; %y是由garchsim生出的 : [x,fevl]=fmincon(@(x)myfun1(x,y),[0.06,0.5,0.2,7,9,10],[],[],[],[],[],[],@(x)mycon(x,y)) : 然後去跑...會出現 : ?? Error using ==> mtimes : Inner matrix dimensions must agree. : Error in ==> optim\private\nlconst at 611 : schg=AN(i,:)*gf; : Error in ==> fmincon at 512 : [X,FVAL,lambda,EXITFLAG,OUTPUT,GRAD,HESSIAN]=... : 請問這些是指哪裡有錯...請知道的人教一下...拜託了..謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.224.41.61
文章代碼(AID): #19luODdy (MATLAB)
文章代碼(AID): #19luODdy (MATLAB)