官方淘宝店 易迪拓培训 旧站入口
首页 > 微波射频 > 射频工程师交流 > 滤波器:根据耦合矩阵画出S参数原程序

滤波器:根据耦合矩阵画出S参数原程序

05-08
clc;
clear;
M_K=[0.0000    0.0056   -0.000   -0.00019    0.0000    0.0001
    0.0056    0.0000    0.0038         0   -0.0013   -0.0000
    0.0000    0.0038    0.0000    0.0048    0.0000   -0.0000
    -0.00019       0    0.0048   -0.0000    0.0038    0.0000
    0.0000   -0.0013    0.0000    0.0038   -0.0000    0.0056
    0.0001   -0.0000   -0.0000   -0.0000    0.0056    0.0000
]
R1=1.0698
Rn =1.0698
M=M_K;
Freq_0=1905;
FBW=12.4;
Freq_start=1820;
Freq_stop=1980;
Freq_step=0.1;
Q=7500;
r_Q=Freq_0/(Q*FBW);
Freq=Freq_start:Freq_step:Freq_stop;
Freq_N=(Freq_stop-Freq_start)/Freq_step+1;
[N_r,N_c]=size(M);
N=N_r;
for i_i=1:1:N
    for j_j=1:1:N
        R(i_i,j_j)=0;
    end
end
R(1,1)=R1;
R(N,N)=Rn;
fbw_1=Freq_0/FBW;
for i_i=1:1:Freq_N
W_1=Freq(i_i)/Freq_0;
W_2=Freq_0/Freq(i_i);
P=fbw_1*(W_1-W_2);
A_1=%i*P*eye(N,N);
A_2=R;
A_3=%i*M*fbw_1;
for k_k=1:1:N
      A_3(k_k,k_k)=A_3(k_k,k_k)-%i*r_Q;
end
A=A_1+A_2+A_3;
In_A_1=inv(A);
S_21(i_i)=2/sqrt(R1*Rn)*In_A_1(N,1);
S_11(i_i)=1-2/R1*In_A_1(1,1);
r_S_21(i_i)=abs(S_21(i_i));
r_S_11(i_i)=abs(S_11(i_i));
dB_S_21(i_i)=20*log10(r_S_21(i_i));
dB_S_11(i_i)=20*log10(r_S_11(i_i));
end
plot(Freq,dB_S_21,'r',Freq,dB_S_11,'b');
xgrid ;
画红的地方是要输入的参数.这个程序当时是在scilab中写的.
有什么问题就留言吧

大概介绍一下,可能有的朋友还不太了解这个.
这个程序可以根据耦合矩阵在scilab中画出S参数(大家可以转换为matlab程序,只是一些标记需要修改一下).
作用有两个,一是验证我们提取的耦合矩阵是否正确,满足S参数的要求.
二是可以在实际滤波器设计完成后,通过实测的S参数来判断所得到的耦合矩阵和我们设计的耦合矩阵的差别,快速找到差别的地方,比如M21有差别,就可以知道12之间的耦合需要调整.
三是可以做为滤波器机辅调试的理论依据.当然这个是通过测量的S参数插值后转换到耦合矩阵.基本原理一样吧

我喜欢
谢谢小编

看了一下,这是算N阶矩阵的,小编其实还不如把原始公式贴出来呢

Top