如何通過CST仿真出來的S參數(shù)獲得SRR結(jié)構(gòu)的等效電磁參數(shù)
求助一下,用CST計算得出一個SRR結(jié)構(gòu)的S參數(shù),但是怎樣繼續(xù)求出結(jié)構(gòu)的等效磁導(dǎo)率和等效介電常數(shù)呢?
嗯 對結(jié)構(gòu)進行參數(shù)提取的方法有很多種。
最簡單的方法就是NRW法,很容易查找到,需要利用matlab來編寫,程序不長大概100行左右
請問你手上有沒有已經(jīng)編好的反演算法程序,能不能發(fā)給我一份,最近在做一個設(shè)計,謝謝!
通過反演計算,需要matlab編程。
同求,現(xiàn)在有沒有結(jié)果?
17
這是NRW法推導(dǎo)的公式,很簡單的過程。本著學(xué)習(xí)提高的原則,建議樓主還是自己用matlab寫寫看先
直接給你.m文件不好
路還很長啊
大家都努力努力
我4年前按照D.R.Smith在2000年的一篇論文寫過一個.論文題目有點忘了,按照里面公式來就可以了先把CST仿真的S參數(shù)用matlab讀進去,好象是要用到折射率的
千兒:
[attachment=60699]
這是NRW法推導(dǎo)的公式,很簡單的過程。本著學(xué)習(xí)提高的原則,建議樓主還是自己用matlab寫寫看先
直接給你.m文件不好
謝謝大神分享,我剛開始的時候用別人的算法算的,可是中間有一段程序跟文章里的公式對不上,貼出代碼,求個指導(dǎo)(紅色行)
===================================================================================
%function CSTRst_X(RstFileName,DataFileName,IniFileName,Cstfilename)
%Cstfilename = 'S_X.s2p';
%RstFileName = 'S_X.txt';
%DataFileName = 'Rst_x.txt';
%IniFileName = 'iniPara.vol';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DPreproc(Cstfilename,RstFileName); %CST分析結(jié)果預(yù)處理操作
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
S = load(RstFileName);
s11 = S(:,1:3);
index_S = [1 4 5];
s21 = S(:,index_S);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[d,area,per]=DataGet(IniFileName); %獲取沿電磁波入射方向材料單胞厚度參數(shù)d
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fre=s11(: ,1)*1e9;
C=3e8;
lamda=C./fre;
k=2*pi./lamda;
n=zeros(size(fre));
S11=s11(: ,2).*exp(1i*(s11(:,3)*pi/180));
S21=s21(: ,2).*exp(1i*(s21(:,3)*pi/180));
Z=zeros(size(fre));
Z1=sqrt(((1+S11).^2-S21.^2)./((1-S11).^2-S21.^2)); %阻抗
Z2=-sqrt(((1+S11).^2-S21.^2)./((1-S11).^2-S21.^2));
z_mini=0.000000001; %阻抗的敏感度
for count=1:size(fre)
if abs(real(Z1(count)))>=z_mini
if real(Z1(count))>0
Z(count)=Z1(count);
else Z(count)=Z2(count);
end
else if abs(S21./(1-S11.*(Z1-1)./(Z1+1)))<=1
Z(count)=Z1(count);
else Z(count)=Z2(count);
end
end
end
e_inkd=S21./(1-S11.*(Z-1)./(Z+1));
for fre_sample=1:size(fre)
if fre_sample==1
m=0;
n_f0=1/(k(fre_sample)*d)*((imag(log(e_inkd(fre_sample)))+2*pi*m)-1i*real(log(e_inkd(fre_sample))));
n(fre_sample)=n_f0;
else
clear n_f0
n_f0=n(fre_sample-1);
% n(fre_sample+1)=GetNextn_f0(n_f0,fre_sample,e_inkd,k,d,S11,S21,Z1,Z2)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
delta_1=-1+sqrt(1-2*(1-e_inkd(fre_sample)/e_inkd(fre_sample-1))); %eq7,二項式求根,得到正負delta
delta_2=-1-sqrt(1-2*(1-e_inkd(fre_sample)/e_inkd(fre_sample-1)));
n_f1_near_1=(delta_1+1i*n_f0*k(fre_sample-1)*d)/(1i*k(fre_sample)*d);
n_f1_near_2=(delta_2+1i*n_f0*k(fre_sample-1)*d)/(1i*k(fre_sample)*d); %eq7求出n_f1近似值的兩個根
n_f1_imag=imag(1/(k(fre_sample)*d)*((imag(log(e_inkd(fre_sample)))+2*pi)-1i*real(log(e_inkd(fre_sample)))));
duibi_1=abs(abs(imag(n_f1_near_1))-abs(n_f1_imag)); %與eq4求出的n_f1真值的虛部作對比確定近似值的一個根
duibi_2=abs(abs(imag(n_f1_near_2))-abs(n_f1_imag));
if duibi_1<duibi_2
n_f1_near=n_f1_near_1;
else n_f1_near=n_f1_near_2;
end
m=-100:100; %由eq7求出的n_f1近似值確定真值的m,以及求出采樣頻率f1的n
n_f1_mui=1/(k(fre_sample)*d)*((imag(log(e_inkd(fre_sample)))+2*pi*m)-1i*real(log(e_inkd(fre_sample))));
duibi_3=abs(abs(real(n_f1_near))-abs(abs(real(n_f1_mui))));
min_duibi_3=min(duibi_3);
xxxx=size(m);
for count_duibi_3=1:xxxx(1,2)
if min_duibi_3 == duibi_3(count_duibi_3)
find_dim=count_duibi_3;
end
end
n_f1=n_f1_mui(find_dim);
n(fre_sample)=n_f1;
end
end
n_real=real(n);
n_imag=imag(n);
ep_real=real(n./Z);
ep_imag=imag(n./Z);
mu_real=real(n.*Z);
mu_imag=imag(n.*Z);
%FinalM2=[s11(:,1),-n_real,n_imag,real(Z),-imag(Z),-ep_real,ep_imag,-mu_real,mu_imag];
n1=-n_real+1i.*n_imag;
Gamma=1i.*2*pi*n1.*fre./C;
alphaa=d.*real(Gamma);
Betaa=d.*imag(Gamma);
rst = [s11(:,1)'; -n_real'; -mu_real';-ep_real'];
fid = fopen(DataFileName,'wt','n','US-ASCII');
fprintf(fid,'%6.8f %12.8f %12.8f %12.8fn',rst);
fclose(fid);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
謝謝了樓主了