代码拉取完成,页面将自动刷新
%--------------------------------------------------------------------------
% Edited by bbl
% Date: 2024-03-17(yyyy-mm-dd)
% PolyPhaseNetwork analysis
%--------------------------------------------------------------------------
function [ang, Suppression] = funAnaPN2(R, C, RL, ft)
n = length(R);
N = length(ft);
L = [1/RL(1), 0, 0, 0;
0,1/RL(1), 0, 0;
0, 0, 1/RL(1), 0;
0, 0, 0, 1/RL(1);];
I = [ 1, 0, 0, 0;
0, 1, 0, 0;
0, 0, 1, 0;
0, 0, 0, 1;];
Vin = [ 1;
1;
-1;
-1;];
M0 = [0,0,0,0;0,0,0,0;0,0,0,0;0,0,0,0];
Vini = [0;0;0;0];
for ii=1:N
f = ft(ii);
[A11r, A11i,A12r,A12i,A21r,A21i,A22r,A22i] = MA2(R(1),C(1),f);
% Ar = [A11r,A12r;A21r,A22r];
% Ai = [A11i,A12i;A21i,A22i];
% A = Ar+1i*Ai;
for m = 2:n
[Ax11r, Ax11i,Ax12r,Ax12i,Ax21r,Ax21i,Ax22r,Ax22i] = MA2(R(m),C(m),f);
% Axr = [Ax11r,Ax12r;Ax21r,Ax22r];
% Axi = [Ax11i,Ax12i;Ax21i,Ax22i];
% Ax = Axr+1i*Axi;
% A = A*Ax;
[Ax11rmut, Ax11imut] = funCMmut(A11r, A11i, Ax11r, Ax11i);
[Ax12rmut, Ax12imut] = funCMmut(A12r, A12i, Ax21r, Ax21i);
[A11ro, A11io] = funCMsum(Ax11rmut, Ax11imut, Ax12rmut, Ax12imut);
[Ax11rmut, Ax11imut] = funCMmut(A11r, A11i, Ax12r, Ax12i);
[Ax12rmut, Ax12imut] = funCMmut(A12r, A12i, Ax22r, Ax22i);
[A12ro, A12io] = funCMsum(Ax11rmut, Ax11imut, Ax12rmut, Ax12imut);
[Ax11rmut, Ax11imut] = funCMmut(A21r, A21i, Ax11r, Ax11i);
[Ax12rmut, Ax12imut] = funCMmut(A22r, A22i, Ax21r, Ax21i);
[A21ro, A21io] = funCMsum(Ax11rmut, Ax11imut, Ax12rmut, Ax12imut);
[Ax11rmut, Ax11imut] = funCMmut(A21r, A21i, Ax12r, Ax12i);
[Ax12rmut, Ax12imut] = funCMmut(A22r, A22i, Ax22r, Ax22i);
[A22ro, A22io] = funCMsum(Ax11rmut, Ax11imut, Ax12rmut, Ax12imut);
A11r = A11ro;
A11i = A11io;
A12r = A12ro;
A12i = A12io;
A21r = A21ro;
A21i = A21io;
A22r = A22ro;
A22i = A22io;
% [Ar, Ai] = funCMmut(Ar, Ai, Axr, Axi);
end
% A11 = A(1:4,1:4);
% A12 = A(1:4,5:8);
% A21 = A(5:8,1:4);
% A22 = A(5:8,5:8);
% A11 = A11r+1i*A11i;
% A12 = A12r+1i*A12i;
% A21 = A21r+1i*A21i;
% A22 = A22r+1i*A22i;
% Vout = (I-A12/A22*L)\(A11-A12/A22*A21)*Vin;
% Va(ii) = Vout(3)-Vout(1);
% Vb(ii) = Vout(4)-Vout(2);
% invA22 = inv(A22);
% T2 = A12*invA22;
% Vout = inv(I-T2*L)*(A11-T2*A21)*Vin;
[invA22r, invA22i] = funCMinv(A22r, A22i);
[T2r, T2i] = funCMmut(A12r, A12i, invA22r, invA22i);
[T2Lr, T2Li] = funCMmut(T2r, T2i, L, M0);
[IT2Lr,IT2Li] = funCMsub(I,M0,T2Lr,T2Li);
[invIT2Lr,invIT2Li]=funCMinv(IT2Lr,IT2Li);
[T2A21r, T2A21i] = funCMmut(T2r, T2i, A21r, A21i);
[A11T2A21r,A11T2A21i] = funCMsub(A11r,A11i,T2A21r, T2A21i);
[T3r, T3i] = funCMmut(invIT2Lr,invIT2Li, A11T2A21r,A11T2A21i);
[Voutr, Vouti] = funCMmut(T3r, T3i, Vin, Vini);
Vout = Voutr+1i*Vouti;
Va(ii) = Vout(3)-Vout(1);
Vb(ii) = Vout(4)-Vout(2);
end
ang = angle(Va./Vb);
Suppression = 20*log10(cot((ang-pi/2)/2));
function [A11r,A11i,A12r,A12i,A21r,A21i,A22r,A22i] = MA2(R1, C1, f)
w = 2*pi*f;
M11r = [1/R1, 0, 0, 0;
0, 1/R1, 0, 0;
0, 0, 1/R1, 0;
0, 0, 0, 1/R1];
M12r = -M11r;
M21r = M11r;
M22r = -M11r;
M11i = w*[ C1, 0, 0, 0;
0, C1, 0, 0;
0, 0, C1, 0;
0, 0, 0, C1];
M12i = -w*[ 0, 0, 0, C1;
C1, 0, 0, 0;
0, C1, 0, 0;
0, 0, C1, 0];
M21i = w*[ 0, C1, 0, 0;
0, 0, C1, 0;
0, 0, 0, C1;
C1, 0, 0, 0];
M22i = -w*[ C1, 0, 0, 0;
0, C1, 0, 0;
0, 0, C1, 0;
0, 0, 0, C1];
[A12r, A12i] = funCMinv(M12r, M12i);
[A11r, A11i] = funCMmut(-A12r, -A12i, M11r, M11i);
[A22r, A22i] = funCMmut(M22r, M22i, A12r, A12i);
[Tr, Ti] = funCMmut(M22r, M22i, A11r, A11i);
[A21r, A21i] = funCMsub(M21r, M21i, Tr, Ti);
% A12 = inv(M12);
% A11 = -A12*M11;
% A22 = M22*A12;
% A21 = M21-M22*A11;
% Ar = [A11r,A12r;A21r,A22r];
% Ai = [A11i,A12i;A21i,A22i];
% I = [ 1, 0, 0, 0;
% 0, 1, 0, 0;
% 0, 0, 1, 0;
% 0, 0, 0, 1;];
% IC1 = [ 0, 0, 0, 1;
% 1, 0, 0, 0;
% 0, 1, 0, 0;
% 0, 0, 1, 0;];
% IC2 = [ 0, 1, 0, 0;
% 0, 0, 1, 0;
% 0, 0, 0, 1;
% 1, 0, 0, 0;];
% M11 = (1/R1 +1i*w*C1)*I;
% M12 = -(1/R1*I+1i*w*C1*IC1);
% M21 = (1/R1*I+1i*w*C1*IC2);
% M22 = -(1/R1 +1i*w*C1)*I;
% A12 = inv(M12);
% A11 = -A12*M11;
% A21 = M21-M22*A11;
% A22 = M22*A12;
% A11r=real(A11);
% A11i=imag(A11);
% A12r=real(A12);
% A12i=imag(A12);
% A21r=real(A21);
% A21i=imag(A21);
% A22r=real(A22);
% A22i=imag(A22);
function [invMr, invMi] = funCMinv(Mr, Mi)
MD = inv(Mr)*Mi;
invMr = inv(Mr+Mi*MD);
invMi = -MD*invMr;
function [mutMr, mutMi] = funCMmut(M1r, M1i, M2r, M2i)
mutMr = M1r*M2r-M1i*M2i;
mutMi = M1r*M2i+M1i*M2r;
function [sumMr, sumMi] = funCMsum(M1r, M1i, M2r, M2i)
sumMr = M1r+M2r;
sumMi = M1i+M2i;
function [subMr, subMi] = funCMsub(M1r, M1i, M2r, M2i)
[subMr, subMi] = funCMsum(M1r, M1i, -M2r, -M2i);
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。