我的M文件如下: ^n|u$gIF8
function [G5]=fun(x); pZ/aZg1Ld
syms n1 n2 k1 k2 d; 1)aB']K%
[subwave,nsub]=textread('subout.txt','%f %f'); NU*6MT4
[filmwave,filmtran]=textread('filmtr.dat','%f %f');
5PPV`7Xm9
[p,q]=size(subwave); c}II"P
for j=1:p; vZM.gn
wavel(j)=subwave(j,1); "28b&pm
n(j)=n1+n2/((wavel(j))^2); ;a/Gs^W
k(j)=k1*exp(k2/wavel(j)); /5@V $c8
N(j)=n(j)-i*k(j); "lo:"y(u
phase(j)=2*pi*N(j)*d/wavel(j); +2kJuoj:
ns(j)=nsub(j,1); o;XzJ#P
B(j)=cos(phase(j))+ns(j)*i*sin(phase(j))/N(j); `e
t0i.
C(j)=i*N(j)*sin(phase(j))+ns(j)*cos(phase(j)); Qwn/ ,
T(j)=4*ns(j)/((B(j)+C(j))*conj(B(j)+C(j))); ZB'/DO=i
ts(j)=1-((1-ns(j))/(1+ns(j)))^2; R=IZFwr
t1(j)=ts(j)*T(j); y>vr Uxgo
tf(j)=filmtran(j,1)/100; _5vAnt*
difference(j)=(t1(j)-tf(j))^2; ^D(N_va<
end CT@JNG$<"
G=symsum(difference(j),1,401); y!SElKj
G1=subs(G,n1,sym('x(1)')); ?Sj3-*/?
G2=subs(G1,n2,sym('x(2)')); 0x Vue[ep
G3=subs(G2,k1,sym('x(3)')); Z8P{Cr~U9
G4=subs(G3,k2,sym('x(4)')); vdloh ,
G5=subs(G4,d,sym('x(5)')); x8Rmap@L.
a %"My;8
wRL=9/5(8
@Y'BqDFlZ
在matlab下运行 )8ejT6r
>> options=optimset('tolfun',1e-8,'tolx',1e-8); u@\]r 1
>> [xmin,value,flag,output]=fminsearch(@fun,[1.7,4000,0.005,400,500],options); nz:I\yA
;E/:_DWPD
LB_ylfg
结果出错如下: j4L )D
HTK79
+
??? Conversion to double from sym is not possible. i DV.L
Error in ==> fminsearch at 175 Kd8V,teH
fv(:,1) = funfcn(x,varargin{:}); =j]us?5
lBS!=/7
哪位高手给看看 A.<HOx