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

看板MATLAB作者 (^^)時間16年前 (2009/03/16 23:07), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/3 (看更多)
這是後來修改的.. %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; [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.40.191

03/16 23:24, , 1F
^2 => .^2
03/16 23:24, 1F

03/16 23:37, , 2F
有照樓上說的改了..但是錯誤一樣還是存在
03/16 23:37, 2F
文章代碼(AID): #19lcjBfV (MATLAB)
文章代碼(AID): #19lcjBfV (MATLAB)