我的M文件如下: u;Z~Px4]v
function [G5]=fun(x); XDI@mQmzB
syms n1 n2 k1 k2 d;
c^=,@#
[subwave,nsub]=textread('subout.txt','%f %f'); 3F4I{L
[filmwave,filmtran]=textread('filmtr.dat','%f %f'); P"xP%zqo
[p,q]=size(subwave); Y)a 7osML
for j=1:p; =XWi+')
wavel(j)=subwave(j,1); "C0oFRk
n(j)=n1+n2/((wavel(j))^2); : 0%V:B
k(j)=k1*exp(k2/wavel(j)); U|y+k`
N(j)=n(j)-i*k(j); A!j&g(Z"Q
phase(j)=2*pi*N(j)*d/wavel(j); cy}2~w&s4
ns(j)=nsub(j,1); '7E?|B0],
B(j)=cos(phase(j))+ns(j)*i*sin(phase(j))/N(j); {WC{T2:8
C(j)=i*N(j)*sin(phase(j))+ns(j)*cos(phase(j)); QGYmQ9m{kL
T(j)=4*ns(j)/((B(j)+C(j))*conj(B(j)+C(j))); #=zh&`
ts(j)=1-((1-ns(j))/(1+ns(j)))^2; dwmj*+
t1(j)=ts(j)*T(j); &]ImO
RN
tf(j)=filmtran(j,1)/100; fYH%vr)
difference(j)=(t1(j)-tf(j))^2; av5lgv)3
end 1YS{;
y[o
G=symsum(difference(j),1,401); e<IT2tv>u
G1=subs(G,n1,sym('x(1)')); hZyz5aZ)K
G2=subs(G1,n2,sym('x(2)')); [1Vh3~>J6
G3=subs(G2,k1,sym('x(3)')); \6sp"KqP
G4=subs(G3,k2,sym('x(4)')); P [gqv3V
G5=subs(G4,d,sym('x(5)')); ,rG$JCS'KQ
]^.#d
7[8PSoo
ft$/-;
在matlab下运行 ^(a %B
>> options=optimset('tolfun',1e-8,'tolx',1e-8); Z!ub`coV[
>> [xmin,value,flag,output]=fminsearch(@fun,[1.7,4000,0.005,400,500],options); Q Zd
,GY5{
h"q`gj
>-]Y%O;}
结果出错如下: #Ok*Or
}t]CDa_n
??? Conversion to double from sym is not possible. 'GNT'y_
Error in ==> fminsearch at 175 &%INfl>o7.
fv(:,1) = funfcn(x,varargin{:}); <G#JPt6
4Kx;F
9!%~
哪位高手给看看 ~KCOCtiD