我的M文件如下: L{ho*^b
function [G5]=fun(x); Nt:8ogk/
syms n1 n2 k1 k2 d; ~u&|G$1!0
[subwave,nsub]=textread('subout.txt','%f %f'); ciMM^ZRIb
[filmwave,filmtran]=textread('filmtr.dat','%f %f'); 8BXqZVm.
[p,q]=size(subwave); 2 ?|gnbE:
for j=1:p; V&Mf:@y
wavel(j)=subwave(j,1); ;`v% sx#
n(j)=n1+n2/((wavel(j))^2); _7kM]">j
k(j)=k1*exp(k2/wavel(j)); +m,!e*g
N(j)=n(j)-i*k(j); *zVvQ=
phase(j)=2*pi*N(j)*d/wavel(j); "Vd_CO
ns(j)=nsub(j,1); K3mAXC,d
B(j)=cos(phase(j))+ns(j)*i*sin(phase(j))/N(j); Zt@Z=r:&
C(j)=i*N(j)*sin(phase(j))+ns(j)*cos(phase(j)); 0nW F
T(j)=4*ns(j)/((B(j)+C(j))*conj(B(j)+C(j))); Ep ~wWQh
ts(j)=1-((1-ns(j))/(1+ns(j)))^2; =y%rG :!
t1(j)=ts(j)*T(j); X6RQqen3:
tf(j)=filmtran(j,1)/100; Qu%D
difference(j)=(t1(j)-tf(j))^2; 8
Op.eYe
end o%y;(|4t >
G=symsum(difference(j),1,401); ~ eN8|SR
G1=subs(G,n1,sym('x(1)')); NvtM3
G2=subs(G1,n2,sym('x(2)')); 8v
yG*UK
G3=subs(G2,k1,sym('x(3)')); 4p) e}W*
G4=subs(G3,k2,sym('x(4)')); $T }Tz7(
G5=subs(G4,d,sym('x(5)')); MZ#T^Y
O.k\]'
!0 Q8iW:
o*ANi;1]&B
在matlab下运行 %85Icg
>> options=optimset('tolfun',1e-8,'tolx',1e-8); dEp/dd~(&
>> [xmin,value,flag,output]=fminsearch(@fun,[1.7,4000,0.005,400,500],options); (:\LWJX0=
FfM nul
We`'>'W0
结果出错如下: q42FPq
Fa3gJ[ZAqf
??? Conversion to double from sym is not possible. }fIqH4bp
Error in ==> fminsearch at 175 lr('k`KOQ
fv(:,1) = funfcn(x,varargin{:}); xRDiRj
`1p 8C%
哪位高手给看看 EychR/s