fanyushan |
2010-07-19 14:12 |
fminsearch应用出错
我的M文件如下: J%?'Q{ function [G5]=fun(x); v{ F/Bifo syms n1 n2 k1 k2 d; d7xd" [subwave,nsub]=textread('subout.txt','%f %f'); JrF\7*rh9 [filmwave,filmtran]=textread('filmtr.dat','%f %f'); :*wnO;eN [p,q]=size(subwave); *o8DfZ for j=1:p; G)A5;u\P9 wavel(j)=subwave(j,1); b|i94y( n(j)=n1+n2/((wavel(j))^2); 3P1OyB k(j)=k1*exp(k2/wavel(j)); kan?2x N(j)=n(j)-i*k(j); ;cBFft}D phase(j)=2*pi*N(j)*d/wavel(j); y//yLrs; ns(j)=nsub(j,1); +jcg[|-'/ B(j)=cos(phase(j))+ns(j)*i*sin(phase(j))/N(j); Ybr&z7# 2 C(j)=i*N(j)*sin(phase(j))+ns(j)*cos(phase(j)); ,!"\L~6 T(j)=4*ns(j)/((B(j)+C(j))*conj(B(j)+C(j))); .P[
%t=W ts(j)=1-((1-ns(j))/(1+ns(j)))^2; [XA
f=x t1(j)=ts(j)*T(j); RlU= tf(j)=filmtran(j,1)/100; o=`FGowF difference(j)=(t1(j)-tf(j))^2; K!q:A+] end dm60O8 G=symsum(difference(j),1,401); ?)9mHo^ G1=subs(G,n1,sym('x(1)')); J4
yT| G2=subs(G1,n2,sym('x(2)')); zWxKp;. G3=subs(G2,k1,sym('x(3)')); ]KMOLe6( G4=subs(G3,k2,sym('x(4)')); y0Pr[XZ G5=subs(G4,d,sym('x(5)')); {`0GAW)q pq`Bg`c f`X#1w9 )-FQ_K% 在matlab下运行 Z:|2PQ4 >> options=optimset('tolfun',1e-8,'tolx',1e-8); 7d0E9t;W >> [xmin,value,flag,output]=fminsearch(@fun,[1.7,4000,0.005,400,500],options); Z6<vLc i"uAT$x e ~Tv
%6iaeE 结果出错如下: Az2HlKF"L 4'pg>;*. ??? Conversion to double from sym is not possible. gIR{!'
Error in ==> fminsearch at 175 CErkmod{}e fv(:,1) = funfcn(x,varargin{:}); pA9:1*+;; #`6A}/@.+ 哪位高手给看看 9?)r0`:#
|
|