找回密码
 注册
关于网站域名变更的通知
查看: 559|回复: 2
打印 上一主题 下一主题

matlab通过s参数反演介电常数

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-10-17 15:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
有人知道程序咋写吗

该用户从未签到

2#
发表于 2021-10-18 09:25 | 只看该作者
%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

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);

点评

非常感谢,想再问一下,这个程序是同轴传输线法,然后用matlab反演的吗,好像每个不同的方法测介电常数,反演程序也不一样  详情 回复 发表于 2021-10-19 09:28

该用户从未签到

3#
 楼主| 发表于 2021-10-19 09:28 | 只看该作者
ssdgh 发表于 2021-10-18 09:25
%function CSTRst_X(RstFileName,DataFileName,IniFileName,Cstfilename)

%Cstfilename = 'S_X.s2p';

非常感谢,想再问一下,这个程序是同轴传输线法,然后用matlab反演的吗,好像每个不同的方法测介电常数,反演程序也不一样
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-5 03:29 , Processed in 0.062500 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表