登 录 註 冊
    
  • 1845阅读
  • 8回复

Matlab代码:N+2阶耦合矩阵的综合与分析 [复制链接]

上一主题 下一主题
离线yellowbook
 

只看楼主 倒序阅读 0楼 发表于: 2019-08-30
关键词: 综合分析
GZ0aOpUWVq  
%广义切比雪夫滤波器N+2阶耦合矩阵综合计算程序 GZ0aOpUWVq  
%2019/08/30/@No One GZ0aOpUWVq  
%参考文献: GZ0aOpUWVq  
%1.Microwave Filters for Communication Systems Fundamentals, Design, and Applications 2nd GZ0aOpUWVq  
%2.General coupling matrix synthesis methods for Chebyshev filtering functions GZ0aOpUWVq  
%3.Advanced Coupling Matrix Synthesis Techniques for Microwave Filters GZ0aOpUWVq  
%4.Adaptive Synthesis and Design of Resonator Filters With Source/Load-Multiresonator Coupling GZ0aOpUWVq  
%!!!含有耦合矩阵Floder结构及全规范结构,小于三阶的全规范滤波函数综合时会出错,阶数过高(大于20)也可能会出错 GZ0aOpUWVq  
%有耗会导致回波损耗升高?2019/06/06,群时延计算错误 GZ0aOpUWVq  
clc; GZ0aOpUWVq  
clear all; GZ0aOpUWVq  
GZ0aOpUWVq  
% eg1: GZ0aOpUWVq  
% n=4; GZ0aOpUWVq  
% S=[-3.7431j,-1.8051j,1.5699j,6.1910j]; GZ0aOpUWVq  
% RL=22; GZ0aOpUWVq  
GZ0aOpUWVq  
% eg2: GZ0aOpUWVq  
% n=4; GZ0aOpUWVq  
% S=[1.3217j,1.8082j]; GZ0aOpUWVq  
% RL=22; GZ0aOpUWVq  
GZ0aOpUWVq  
% eg3: GZ0aOpUWVq  
% n=7; GZ0aOpUWVq  
% S=[1.3958j,-1.3958j,1.0749,-1.0749]; GZ0aOpUWVq  
% RL=23; GZ0aOpUWVq  
GZ0aOpUWVq  
% n=input('输入滤波器阶数\nn=') %滤波器的阶数 GZ0aOpUWVq  
% S=input('输入有限位置传输零点\nTz=') %有限位置传输零点位置,以向量形式输入归一化低通原型频率对应的传输零点,eg:S=[2j,-2j] GZ0aOpUWVq  
% RL=input('输入带内回波损耗\nRL=') %带内回波损耗的最小值,与波纹系数有关 GZ0aOpUWVq  
% Start=input('起始频率\nStart Freq=') %MHz Uc>LFX& -B  
% Stop=input('终止频率\nStop Freq=') %MHz Uc>LFX& -B  
% Q=input('谐振器无载Q值\nQu=') Uc>LFX& -B  
% Fstr=input('输入显示起始频率\nFstr=') %MHz Uc>LFX& -B  
% Fsto=input('输入显示截至频率\nFsto=') %MHz Uc>LFX& -B  
Uc>LFX& -B  
n=4; Uc>LFX& -B  
S=[]; Uc>LFX& -B  
RL=20; Uc>LFX& -B  
Start=3400; Uc>LFX& -B  
Stop=3600; Uc>LFX& -B  
Q=800; v '"1/% L  
v '"1/% L  
Fstr=3000; v '"1/% L  
Fsto=4000; v '"1/% L  
v '"1/% L  
BW=Stop-Start; v '"1/% L  
CF=sqrt(Start*Stop); v '"1/% L  
FBW=BW/CF; v '"1/% L  
v '"1/% L  
w=S*-1i;%复频率转化至实频率 v '"1/% L  
v '"1/% L  
%第一步:广义切比雪夫函数综合 v '"1/% L  
%根据有限位置传输零点确定特征多项式P(s)/P(w) v '"1/% L  
P=1; v '"1/% L  
for k=1:length(w) v '"1/% L  
    P=conv(P,[1,-w(1,k)]); v '"1/% L  
end v '"1/% L  
P1=P.*1i.^[0:1:length(w)]; v '"1/% L  
if mod((n-length(w)),2)==0 v '"1/% L  
    P1=P1.*1i; v '"1/% L  
end v '"1/% L  
%P(s)/P(w)综合结束 CR8r|+(8  
CR8r|+(8  
%根据广义切比雪夫滤波函数以及P确定特征多项式F(s)/F(w) CR8r|+(8  
w=[w,inf(1,n-length(w))]; CR8r|+(8  
U1=[1,-1/w(1,1)]; CR8r|+(8  
V1=[sqrt(1-1/(w(1,1)*w(1,1)))]; CR8r|+(8  
U2=U1; CR8r|+(8  
V2=V1; CR8r|+(8  
for k=2:n CR8r|+(8  
    U2=conv(U1,[1,-1/w(1,k)])+conv([1,0,-1],V1.*sqrt(1-1/(w(1,k)*w(1,k)))); CR8r|+(8  
    V2=conv(V1,[1,-1/w(1,k)])+U1.*sqrt(1-1/(w(1,k)*w(1,k))); CR8r|+(8  
    U1=U2; CR8r|+(8  
    V1=V2; CR8r|+(8  
end CR8r|+(8  
F=U1./(U1(1,1)); CR8r|+(8  
V=V1./(V1(1,1)); CR8r|+(8  
V1=V.*1i.^[0:1:length(V)-1]; CR8r|+(8  
F1=F.*1i.^[0:1:n]; CR8r|+(8  
%F(s)/F(w)综合结束 CR8r|+(8  
CR8r|+(8  
%根据能量守恒公式以及P、F确定特征多项式E(s)/E(w) CR8r|+(8  
P2=conv(P,P); CR8r|+(8  
F2=conv(F,F); CR8r|+(8  
P2=[zeros(1,length(F2)-length(P2)),P2]; LA0x6E+I  
ep=1/sqrt(10^(RL/10)-1)*abs(polyval(P,1)/polyval(F,1)); LA0x6E+I  
LA0x6E+I  
if length(S)==n LA0x6E+I  
    epr=ep/sqrt(ep*ep-1); LA0x6E+I  
else LA0x6E+I  
    epr=1; LA0x6E+I  
end LA0x6E+I  
E2=P2./(ep*ep)+F2./(epr*epr); LA0x6E+I  
RootE=roots(E2); LA0x6E+I  
leftRootE=find(imag(RootE)>0); LA0x6E+I  
RootE=RootE(leftRootE); LA0x6E+I  
E=poly(RootE); \Uiw: ,  
E1=E.*1i.^[0:1:n]; \Uiw: ,  
%E(s)/E(w)综合结束 \Uiw: ,  
\Uiw: ,  
for k=1:1000 \Uiw: ,  
    d(k)=-8+16/1000*k; \Uiw: ,  
    r(k)=polyval(F,d(k))/polyval(E,d(k))/epr; \Uiw: ,  
    t(k)=polyval(P,d(k))/polyval(E,d(k))/ep; \Uiw: ,  
end \Uiw: ,  
\Uiw: ,  
figure('name','无耗综合结果'); \Uiw: ,  
subplot(2,3,1); \Uiw: ,  
I=-20*log10(abs(t)); \Uiw: ,  
R=-20*log10(abs(r)); \Uiw: ,  
plot(d,I,'b',d,R,'r','LineWidth',1.5); \Uiw: ,  
set(gca,'YDir','reverse'); \Uiw: ,  
set(gca,'FontSize',12); 7i`8 c =.  
set(gca,'linewidth',1.2); 7i`8 c =.  
xlabel('归一化频率(rad/s)'); 7i`8 c =.  
ylabel('抑制/回波损耗(dB)'); 7i`8 c =.  
ylim([-2, 50]); 7i`8 c =.  
xlim([-8, 8]); 7i`8 c =.  
grid on; 7i`8 c =.  
title('低通原型幅度响应','fontsize',14); 7i`8 c =.  
7i`8 c =.  
%F3:反射零点,E3:反射/传输极点,P3:有限位置传输零点,V3:带内反射极大值 7i`8 c =.  
F3=roots(F1); 7i`8 c =.  
E3=roots(E1); 7i`8 c =.  
P3=roots(P1); 7i`8 c =.  
V3=roots(V1); 7i`8 c =.  
realF=real(F3); 7i`8 c =.  
realE=real(E3); 7i`8 c =.  
realP=real(P3); 7i`8 c =.  
realV=real(V3); n_ORD@$]  
imagF=imag(F3); n_ORD@$]  
imagE=imag(E3); n_ORD@$]  
imagP=imag(P3); n_ORD@$]  
imagV=imag(V3); n_ORD@$]  
subplot(2,3,2); n_ORD@$]  
plot(realF,imagF,'o',realP,imagP,'^','LineWidth',1.5); n_ORD@$]  
axis([-2,2,-8,8]); n_ORD@$]  
xlabel('实部'); n_ORD@$]  
ylabel('虚部'); n_ORD@$]  
set(gca,'FontSize',12); n_ORD@$]  
set(gca,'linewidth',1.2); n_ORD@$]  
title('反射零点与传输零点','fontsize',14); n_ORD@$]  
grid on; n_ORD@$]  
subplot(2,3,3); x2P}8Idg?A  
plot(realE,imagE,'s',realV,imagV,'v','LineWidth',1.5); x2P}8Idg?A  
axis([-2,2,-1.5,1.5]); x2P}8Idg?A  
xlabel('实部'); x2P}8Idg?A  
ylabel('虚部'); x2P}8Idg?A  
set(gca,'FontSize',12); x2P}8Idg?A  
set(gca,'linewidth',1.2); x2P}8Idg?A  
title('传输/反射极点与带内反射极大值点','fontsize',14); x2P}8Idg?A  
grid on; x2P}8Idg?A  
x2P}8Idg?A  
%第二步:N+2阶耦合矩阵综合 x2P}8Idg?A  
%由S参数计算导纳多项式 x2P}8Idg?A  
M1=zeros(1,n); x2P}8Idg?A  
N1=zeros(1,n); x2P}8Idg?A  
if mod(n,2)==0 x2P}8Idg?A  
    for k=n+1:-2:1 x2P}8Idg?A  
        M1(1,k)=real(E1(1,k)+F1(1,k)); x2P}8Idg?A  
        N1(1,k)=1i*imag(E1(1,k)+F1(1,k)); x2P}8Idg?A  
    end Im{I23.2  
    for k=n:-2:2 Im{I23.2  
        M1(1,k)=1i*imag(E1(1,k)+F1(1,k)); Im{I23.2  
        N1(1,k)=real(E1(1,k)+F1(1,k)); Im{I23.2  
    end Im{I23.2  
    lambdaK=roots(M1); Im{I23.2  
else Im{I23.2  
    for k=n+1:-2:2 Im{I23.2  
        M1(1,k)=real(E1(1,k)+F1(1,k)); Im{I23.2  
        N1(1,k)=1i*imag(E1(1,k)+F1(1,k)); Im{I23.2  
    end Im{I23.2  
    for k=n:-2:1 Im{I23.2  
        M1(1,k)=1i*imag(E1(1,k)+F1(1,k)); Im{I23.2  
        N1(1,k)=real(E1(1,k)+F1(1,k)); Im{I23.2  
    end Im{I23.2  
    lambdaK=roots(N1); Im{I23.2  
    T1=N1; Im{I23.2  
    N1=M1; Im{I23.2  
    M1=T1; Im{I23.2  
end Im{I23.2  
<SmXMruU  
%计算MSL <SmXMruU  
Msl=sqrt((epr-1)/(epr+1)); <SmXMruU  
if Msl==0 <SmXMruU  
    MP=P1/ep; <SmXMruU  
else <SmXMruU  
    MP=P1/ep-1i*Msl*M1; <SmXMruU  
end <SmXMruU  
<SmXMruU  
%根据特征值计算留数 <SmXMruU  
for k=1:length(lambdaK) <SmXMruU  
    r22(k)=polyval(N1,lambdaK(k))/polyval(polyder(M1),lambdaK(k)); <SmXMruU  
    r21(k)=polyval(MP,lambdaK(k))/polyval(polyder(M1),lambdaK(k)); <SmXMruU  
end <SmXMruU  
<SmXMruU  
%根据特征值与留数计算N+2阶耦合矩阵 <SmXMruU  
M=zeros(n+2,n+2); <SmXMruU  
for k=1:n *fVs|  
    M(k+1,1)=sqrt(r22(k)); *fVs|  
    M(1,k+1)=M(k+1,1); *fVs|  
    M(k+1,n+2)=r21(k)/M(k+1,1); *fVs|  
    M(n+2,k+1)=M(k+1,n+2); *fVs|  
    M(k+1,k+1)=lambdaK(k)*1i; *fVs|  
end *fVs|  
M(1,n+2)=Msl; *fVs|  
M(n+2,1)=Msl; *fVs|  
display(real(M)); *fVs|  
%N+2阶未化简耦合矩阵计算结束 *fVs|  
*fVs|  
%第三步:由耦合矩阵计算带通滤波器S参数(N+2阶耦合矩阵的直接分析) *fVs|  
R=zeros(n+2,n+2); *fVs|  
R(1,1)=1; *fVs|  
R(n+2,n+2)=1; *fVs|  
W=eye(n+2,n+2); *fVs|  
W(1,1)=0; *fVs|  
W(n+2,n+2)=0; hxcRFqX"  
for k=1:1000 hxcRFqX"  
    wp(k)=((Fstr+(Fsto-Fstr)*k/1000)/CF-CF/(Fstr+(Fsto-Fstr)*k/1000))/FBW; hxcRFqX"  
    Bd(k)=Fstr+(Fsto-Fstr)*k/1000; hxcRFqX"  
    A=R.*(-1i)+W.*wp(k)+real(M); hxcRFqX"  
    AP=inv(A); hxcRFqX"  
    S21(k)=-2*1i*AP(n+2,1); hxcRFqX"  
    S11(k)=1+2*1i*AP(1,1); hxcRFqX"  
end hxcRFqX"  
hxcRFqX"  
%画出带通滤波器的图 hxcRFqX"  
subplot(2,3,4); hxcRFqX"  
dBS21=-20*log10(abs(S21)); hxcRFqX"  
dBS11=-20*log10(abs(S11)); hxcRFqX"  
plot(Bd,dBS21,'b',Bd,dBS11,'r','LineWidth',1.5); hxcRFqX"  
set(gca,'YDir','reverse'); hxcRFqX"  
set(gca,'FontSize',12); hxcRFqX"  
set(gca,'linewidth',1.2); hxcRFqX"  
xlabel('频率(MHz)'); hxcRFqX"  
ylabel('抑制/回波损耗(dB)'); hxcRFqX"  
ylim([-2, 50]); hxcRFqX"  
grid on; +4[L_  
title('带通幅度响应','fontsize',14); +4[L_  
subplot(2,3,5); +4[L_  
PS21=angle(S21).*180/pi; +4[L_  
PS11=angle(S11).*180/pi; +4[L_  
plot(Bd,PS21,'b',Bd,PS11,'r','LineWidth',1.5); +4[L_  
set(gca,'FontSize',12); +4[L_  
set(gca,'linewidth',1.2); +4[L_  
ylim([-180,180]); +4[L_  
grid on; +4[L_  
xlabel('频率(MHz)'); +4[L_  
ylabel('相位(°)'); +4[L_  
title('带通相位响应','fontsize',14); +4[L_  
+4[L_  
%滤波器群时延 +4[L_  
tao21=-1*diff(PS21)/(1000/2000);%%%%%% +4[L_  
tao21=[tao21,0]; +4[L_  
subplot(2,3,6); +4[L_  
plot(Bd,tao21,'.b','LineWidth',1.5); +4[L_  
set(gca,'FontSize',12); +4[L_  
set(gca,'linewidth',1.2); +4[L_  
ylim([-0.5,12]); OoG Nij  
grid on; OoG Nij  
xlabel('频率(MHz)'); OoG Nij  
ylabel('群时延(ns)'); OoG Nij  
title('带通滤波器群时延','fontsize',14); OoG Nij  
cursorMode=datacursormode(gcf); OoG Nij  
set(cursorMode,'enable','on'); OoG Nij  
OoG Nij  
%包含损耗的计算 OoG Nij  
figure('name','低损耗综合结果'); OoG Nij  
subplot(1,3,1); OoG Nij  
for k=1:1000 OoG Nij  
    wpp(k)=((Fstr+(Fsto-Fstr)*k/1000)/CF-CF/(Fstr+(Fsto-Fstr)*k/1000))/FBW-1i*1/Q/FBW; OoG Nij  
    Bd(k)=Fstr+(Fsto-Fstr)*k/1000; OoG Nij  
    Ap=R.*(-1i)+W.*wpp(k)+real(M); OoG Nij  
    APp=inv(Ap); OoG Nij  
    S21p(k)=-2*1i*APp(n+2,1); OoG Nij  
    S11p(k)=1+2*1i*APp(1,1); OoG Nij  
end ~ V:@4P  
dBS21p=-20*log10(abs(S21p)); ~ V:@4P  
dBS11p=-20*log10(abs(S11p)); ~ V:@4P  
plot(Bd,dBS21p,'b',Bd,dBS11p,'r','LineWidth',1.5); ~ V:@4P  
set(gca,'YDir','reverse'); ~ V:@4P  
set(gca,'FontSize',12); ~ V:@4P  
set(gca,'linewidth',1.2); ~ V:@4P  
xlabel('频率(MHz)'); ~ V:@4P  
ylabel('抑制/回波损耗(dB)'); ~ V:@4P  
ylim([-2, 50]); ~ V:@4P  
grid on; ~ V:@4P  
title('带损耗带通幅度响应','fontsize',14); ~ V:@4P  
subplot(1,3,2); ~ V:@4P  
plot(Bd,dBS21,'b',Bd,dBS21p,'r','LineWidth',1.5); y`n'>F11  
set(gca,'YDir','reverse'); y`n'>F11  
set(gca,'FontSize',12); y`n'>F11  
set(gca,'linewidth',1.2); y`n'>F11  
xlabel('频率(MHz)'); y`n'>F11  
ylabel('抑制/回波损耗(dB)'); y`n'>F11  
ylim([0, 1]); y`n'>F11  
grid on; y`n'>F11  
title('有/无损耗带通幅度响应对比(窄带)','fontsize',14); y`n'>F11  
y`n'>F11  
subplot(1,3,3); y`n'>F11  
plot(Bd,dBS21,'b--',Bd,dBS21p,'r','LineWidth',1.5); y`n'>F11  
set(gca,'YDir','reverse'); y`n'>F11  
set(gca,'FontSize',12); y`n'>F11  
set(gca,'linewidth',1.2); 9K9{$jN~  
xlabel('频率(MHz)'); 9K9{$jN~  
ylabel('抑制/回波损耗(dB)'); 9K9{$jN~  
axis([3000,4000,-2,50]); 9K9{$jN~  
grid on; 9K9{$jN~  
title('有/无损耗带通幅度响应对比(宽带)','fontsize',14); 9K9{$jN~  
cursorMode=datacursormode(gcf); 9K9{$jN~  
set(cursorMode,'enable','on'); 9K9{$jN~  
9K9{$jN~  
[NN,N]=size(M); 9K9{$jN~  
9K9{$jN~  
for i=1:N-3 %有几个数相加 9K9{$jN~  
    if mod(i,2)==1 9K9{$jN~  
        c=-1; 9K9{$jN~  
        for j=1:N-3+1-i 9K9{$jN~  
            l=N-(i+1)/2-j+1; 9K9{$jN~  
            n=l-1; 9K9{$jN~  
            k=(i+1)/2; +Vf39}8  
            m=k; +Vf39}8  
            theta=atan(c*M(k,l)/M(m,n)); +Vf39}8  
            R=eye(N); +Vf39}8  
            R(n,n)=cos(theta); +Vf39}8  
            R(l,l)=R(n,n); +Vf39}8  
            R(n,l)=-sin(theta); +Vf39}8  
            R(l,n)=-R(n,l); +Vf39}8  
  & .. +Vf39}8  
+Vf39}8  
亲爱的朋友您仅能浏览部分内容,查看全部内容及附件请先 登录注册

离线yellowbook

只看该作者 1楼 发表于: 2019-08-30
如有错误,欢迎大家指正,大家相互 .. CKAs3",  
@EzSosmF  
亲爱的朋友您仅能浏览部分内容,查看全部内容及附件请先 登录注册

离线yellowbook

只看该作者 2楼 发表于: 2019-08-30
Re:Matlab代码:N+2阶耦合矩阵的综合与分析
标题说明:所谓综合是由响应推得电路结构的过程;所谓分析是由电路结构推得响应的过程。现代滤波器大都使用广义切比雪夫函数为特征函数,也就是我们只需要根据客户所给出的指标,确定滤波器的阶数(反射零点个数)以及有限位置传输零点个数与位置就可以确定唯一滤波器的响应(指S参数)。所谓耦合矩阵的综合就是通过滤波器阶数与有限位置传输零点的信息确定耦合矩阵(CM)的过程,此处利用的是解析的方法,可得到精确解。所谓耦合矩阵的分析就是由耦合矩阵 .. @EzSosmF  
@EzSosmF  
亲爱的朋友您仅能浏览部分内容,查看全部内容及附件请先 登录注册

离线yellowbook

只看该作者 3楼 发表于: 2019-08-30
有关耦合矩阵的拓扑:对N阶耦合矩阵直接综合,首先得出的初始耦合矩阵几乎所有元素都非零(全耦合形式);对于N+2阶耦合矩阵直接综合,首先得出的初始耦合矩阵为全规范形式(横向拓扑)。这些耦合矩阵无法使用物理结构实现,必须将其化简为可实现形式,基站同轴滤波器或介质波导滤波器大都使用CT(三元组)、CQ(四元组)、嵌套结构。由于在对耦合矩阵进行相似变换前后,电路的响应不变,故我们一般使用Givens变化(旋转)对耦合矩阵进行化简,此过程较为复杂,本处仅给出了 .. Oyhl*`-*t  
Oyhl*`-*t  
亲爱的朋友您仅能浏览部分内容,查看全部内容及附件请先 登录注册

离线shaka

只看该作者 4楼 发表于: 2019-08-31
mark, thanks for sharin .. %5 V!Fdb  
%5 V!Fdb  
亲爱的朋友您仅能浏览部分内容,查看全部内容及附件请先 登录注册

离线tzj2013

只看该作者 5楼 发表于: 2019-09-02
好久没用matlab了, .. {~NiGH Y  
{~NiGH Y  
亲爱的朋友您仅能浏览部分内容,查看全部内容及附件请先 登录注册

离线慕蓉楚川

只看该作者 6楼 发表于: 2019-10-14
感谢楼主的干货 .. {~NiGH Y  
{~NiGH Y  
亲爱的朋友您仅能浏览部分内容,查看全部内容及附件请先 登录注册

离线zshleee

只看该作者 7楼 发表于: 07-01
很不错,学习! .. l=(4o4um  
l=(4o4um  
亲爱的朋友您仅能浏览部分内容,查看全部内容及附件请先 登录注册

离线cockwuxh

只看该作者 8楼 发表于: 07-21
太有帮助了,感 .. l=(4o4um  
l=(4o4um  
亲爱的朋友您仅能浏览部分内容,查看全部内容及附件请先 登录注册

快速回复
限1000 字节
 
上一个 下一个