如何通过CST仿真出来的S参数获得SRR结构的等效电磁参数
求助一下,用CST计算得出一个SRR结构的S参数,但是怎样继续求出结构的等效磁导率和等效介电常数呢?
嗯 对结构进行参数提取的方法有很多种。
最简单的方法就是NRW法,很容易查找到,需要利用matlab来编写,程序不长大概100行左右
请问你手上有没有已经编好的反演算法程序,能不能发给我一份,最近在做一个设计,谢谢!
通过反演计算,需要matlab编程。
同求,现在有没有结果?
17
这是NRW法推导的公式,很简单的过程。本着学习提高的原则,建议楼主还是自己用matlab写写看先
直接给你.m文件不好
路还很长啊
大家都努力努力
我4年前按照D.R.Smith在2000年的一篇论文写过一个.论文题目有点忘了,按照里面公式来就可以了先把CST仿真的S参数用matlab读进去,好象是要用到折射率的
千儿:
[attachment=60699]
这是NRW法推导的公式,很简单的过程。本着学习提高的原则,建议楼主还是自己用matlab写写看先
直接给你.m文件不好
谢谢大神分享,我刚开始的时候用别人的算法算的,可是中间有一段程序跟文章里的公式对不上,贴出代码,求个指导(红色行)
===================================================================================
%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分析结果预处理操作
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
S = load(RstFileName);
s11 = S(:,1:3);
index_S = [1 4 5];
s21 = S(:,index_S);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[d,area,per]=DataGet(IniFileName); %获取沿电磁波入射方向材料单胞厚度参数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);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
谢谢了楼主了