www.gusucode.com > matlab编程遗传算法计算匹配电路源码程序 > code1/code/MATLAB源代码/matlab_match/plot_s21_helu.m

    function [ ] = plot_s21_helu(Chrom,num_integer,num_parameter)
%UNTITLED3 此处显示有关此函数的摘要
%   此处显示详细说明

%ChromCopy=Chrom;
column_of_compoment=num_integer+1:num_integer+(num_integer-1)*num_parameter;                             %代表元件值的基因所在列的列标号

num_structure=1:num_integer;                        %单元结构的标号

[num_of_individual,num_of_variable]=size(Chrom);                       %提取出种群的个体数目和变量数


frequency_1MHz=1e6.*[46.1 46.2 46.3 46.4 46.5 46.6 46.7 46.8 46.9 ...
    47.0 47.1 47.2 47.3 47.4 47.5 47.6 47.7 47.8 47.9 ...
    48.0 48.1 48.2 48.3 48.4 48.5 48.6 48.7 48.8 48.9 ...
    49.0 49.1 49.2 49.3 49.4 49.5 49.6 49.7 49.8 49.9 ...
    50.0 50.1 50.2 50.3 50.4 50.5 50.6 50.7 50.8 50.9 ...
    51.0 51.1 51.2 51.3 51.4];

num_of_point=length(frequency_1MHz);               %用于计算的频率点的数目

[A_1,B_1,C_1,D_1]=ABCD_5_1();
[A_2,B_2,C_2,D_2]=ABCD_5_2();

ABCD=zeros(2,2,num_of_individual,num_of_point);    %预先给ABCD矩阵分配内存空间

parfor f=1:num_of_point              %频率点循环
  w=2*pi*frequency_1MHz(f); 
%  ABCD(:,:,:,f)=reshape(repmat([1 0;0 1],1,num_of_individual),2,2,num_of_individual);
  ChromCopy=Chrom;
  num_structure=1:num_integer;                        %单元结构的标号
  column_of_compoment=num_integer+1:num_integer+(num_integer-1)*num_parameter;   %代表元件值的基因所在列的列标号 在parfor内赋值,是临时变量,可提高parfor的通信速度
  
  for k=1:num_of_individual       %个体循环
%    ABCD(:,:,k,f)=[1 0;1/(1i*w*L0)+1i*w*C0 1];
     ABCD(:,:,k,f)=[A_1(f) B_1(f);C_1(f) D_1(f)];
     
    for m=2:ChromCopy(k,1)+1

      increment=(m-2)*num_parameter;

      QL=100;
      QC=2000;
      L1=ChromCopy(k,column_of_compoment(1+increment))*1e-9;
      ESR_L1=w*L1/50;
      C1=ChromCopy(k,column_of_compoment(2+increment))*1e-12;
      ESR_C1=1/(w*C1*QC);

      L2=ChromCopy(k,column_of_compoment(3+increment))*1e-9;
      ESR_L2=w*L2/QL;
      C2=ChromCopy(k,column_of_compoment(4+increment))*1e-12;
      ESR_C2=1/(w*C2*QC);

      L3=ChromCopy(k,column_of_compoment(5+increment))*1e-9;
      ESR_L3=w*L3/QL;
      C3=ChromCopy(k,column_of_compoment(6+increment))*1e-12;
      ESR_C3=1/(w*C3*QC);

      L4=ChromCopy(k,column_of_compoment(7+increment))*1e-9;
      ESR_L4=w*L4/QL;
      C4=ChromCopy(k,column_of_compoment(8+increment))*1e-12;
      ESR_C4=1/(w*C4*QC);

      L5=ChromCopy(k,column_of_compoment(9+increment))*1e-9;
      ESR_L5=w*L5/QL;
      C5=ChromCopy(k,column_of_compoment(10+increment))*1e-12;
      ESR_C5=1/(w*C5*QC);
      
      L6=ChromCopy(k,column_of_compoment(11+increment))*1e-9;
      ESR_L6=w*L6/QL;
      C6=ChromCopy(k,column_of_compoment(12+increment))*1e-12;
      ESR_C6=1/(w*C6*QC);
      
      L7=ChromCopy(k,column_of_compoment(13+increment))*1e-9;
      ESR_L7=w*L7/QL;
      C7=ChromCopy(k,column_of_compoment(14+increment))*1e-12;
      ESR_C7=1/(w*C7*QC);
      
      R=ChromCopy(k,column_of_compoment(15+increment));

     switch Chrom(k,num_structure(m))         %判断单元电路的结构
        case 1                     %1代表串联L
          A=1;
          B=1i*w*L1+ESR_L1;
          C=0;
          D=1;
        case 2                     %2代表串联C
          A=1;
          B=1/(1i*w*C1)+ESR_C1;
          C=0;
          D=1;
        case 3                     %3代表并联的L
          A=1;
          B=0;
          C=1/(1i*w*L1+ESR_L1);
          D=1;
        case 4                     %4代表并联的C
          A=1;
          B=0;
          C=1/(1/(1i*w*C1)+ESR_C1);
          D=1;
%        case 5                    %5代表串联的串联LC
%          A=1;
%          B=1i*w*L1+ESR_L1+1/(1i*w*C1)+ESR_C1;
%          C=0;
%          D=1;
%        case 6                    %6代表串联的并联LC
%          A=1;
%          B=1/(1/(1i*w*L1+ESR_L1)+1/(1/(1i*w*C1)+ESR_C1));
%          C=0;
%          D=1;
%        case 7                    %7代表并联的串联LC
%          A=1;
%          B=0;
%          C=1/(1i*w*L1+ESR_L1+1/(1i*w*C1)+ESR_C1);
%          D=1;
%        case 8                    %8代表并联的并联LC
%          A=1;
%          B=0;
%          C=1/(1i*w*L1+ESR_L1)+1/(1/(1i*w*C1)+ESR_C1);
%          D=1;
%        case 5
%           ABCD1=[1 R;0 1]*(([1 1i*w*L1+ESR_L1;0 1]*[1 0;1/(1/(1i*w*C1)+ESR_C1) 1])^n1)*(([1 1i*w*L2+ESR_L2;0 1]*[1 0;1/(1/(1i*w*C2)+ESR_C2) 1])^n2);
%           Zin=ABCD1(1,1)/ABCD1(2,1);
%           A=1;
%           B=0;
%           C=1/Zin;
%           D=1;
%        case 6
%           ABCD1=[1 R;0 1]*(([1 1i*w*L1+ESR_L1;0 1]*[1 0;1/(1/(1i*w*C1)+ESR_C1) 1])^n1)*(([1 1i*w*L2+ESR_L2;0 1]*[1 0;1/(1/(1i*w*C2)+ESR_C2) 1])^n2)*(([1 1i*w*L3+ESR_L3;0 1]*[1 0;1/(1/(1i*w*C3)+ESR_C3) 1])^n3);
%           Zin=ABCD1(1,1)/ABCD1(2,1);
%           A=1;
%           B=0;
%           C=1/Zin;
%           D=1;
%        case 7
%           ABCD1=[1 R;0 1]*(([1 1i*w*L1+ESR_L1;0 1]*[1 0;1/(1/(1i*w*C1)+ESR_C1) 1])^n1)*(([1 1i*w*L2+ESR_L2;0 1]*[1 0;1/(1/(1i*w*C2)+ESR_C2) 1])^n2)*(([1 1i*w*L3+ESR_L3;0 1]*[1 0;1/(1/(1i*w*C3)+ESR_C3) 1])^n3)*(([1 1i*w*L4+ESR_L4;0 1]*[1 0;1/(1/(1i*w*C4)+ESR_C4) 1])^n4);
%           Zin=ABCD1(1,1)/ABCD1(2,1);
%           A=1;
%           B=0;
%           C=1/Zin;
%           D=1;
        case 5
           ABCD1=[1 R;0 1]*(([1 1i*w*L2+ESR_L2;0 1]*[1 0;1/(1/(1i*w*C2)+ESR_C2) 1]))*(([1 1i*w*L3+ESR_L3;0 1]*[1 0;1/(1/(1i*w*C3)+ESR_C3) 1]))*(([1 1i*w*L4+ESR_L4;0 1]*[1 0;1/(1/(1i*w*C4)+ESR_C4) 1]));
           Zin=ABCD1(1,1)/ABCD1(2,1);
           A=1;
           B=0;
           C=1/Zin;
           D=1;
        case 6
           ABCD1=[1 R;0 1]*(([1 1i*w*L2+ESR_L2;0 1]*[1 0;1/(1/(1i*w*C2)+ESR_C2) 1]))*(([1 1i*w*L3+ESR_L3;0 1]*[1 0;1/(1/(1i*w*C3)+ESR_C3) 1]))*(([1 1i*w*L4+ESR_L4;0 1]*[1 0;1/(1/(1i*w*C4)+ESR_C4) 1]))*(([1 1i*w*L5+ESR_L5;0 1]*[1 0;1/(1/(1i*w*C5)+ESR_C5) 1]));
           Zin=ABCD1(1,1)/ABCD1(2,1);
           A=1;
           B=0;
           C=1/Zin;
           D=1;
        case 7
           ABCD1=[1 R;0 1]*(([1 1i*w*L2+ESR_L2;0 1]*[1 0;1/(1/(1i*w*C2)+ESR_C2) 1]))*(([1 1i*w*L3+ESR_L3;0 1]*[1 0;1/(1/(1i*w*C3)+ESR_C3) 1]))*(([1 1i*w*L4+ESR_L4;0 1]*[1 0;1/(1/(1i*w*C4)+ESR_C4) 1]))*(([1 1i*w*L5+ESR_L5;0 1]*[1 0;1/(1/(1i*w*C5)+ESR_C5) 1]))*(([1 1i*w*L6+ESR_L6;0 1]*[1 0;1/(1/(1i*w*C6)+ESR_C6) 1]));
           Zin=ABCD1(1,1)/ABCD1(2,1);
           A=1;
           B=0;
           C=1/Zin;
           D=1;
        case 8
           ABCD1=[1 R;0 1]*(([1 1i*w*L2+ESR_L2;0 1]*[1 0;1/(1/(1i*w*C2)+ESR_C2) 1]))*(([1 1i*w*L3+ESR_L3;0 1]*[1 0;1/(1/(1i*w*C3)+ESR_C3) 1]))*(([1 1i*w*L4+ESR_L4;0 1]*[1 0;1/(1/(1i*w*C4)+ESR_C4) 1]))*(([1 1i*w*L5+ESR_L5;0 1]*[1 0;1/(1/(1i*w*C5)+ESR_C5) 1]))*(([1 1i*w*L6+ESR_L6;0 1]*[1 0;1/(1/(1i*w*C6)+ESR_C6) 1]))*(([1 1i*w*L7+ESR_L7;0 1]*[1 0;1/(1/(1i*w*C7)+ESR_C7) 1]));
           Zin=ABCD1(1,1)/ABCD1(2,1);
           A=1;
           B=0;
           C=1/Zin;
           D=1;
      end

      ABCD(:,:,k,f)=ABCD(:,:,k,f)*[A B;C D];

    end
    ABCD(:,:,k,f)=ABCD(:,:,k,f)*[A_2(f) B_2(f);C_2(f) D_2(f)];

  end
end
S21_all=zeros(num_of_point,num_of_individual);
S11_all=zeros(num_of_point,num_of_individual);
S22_all=zeros(num_of_point,num_of_individual);
VSWR1=zeros(num_of_point,num_of_individual);
VSWR2=zeros(num_of_point,num_of_individual);
%polar_point=zeros(num_of_point,num_of_individual);

    RS=50;
    XS=0;
    RL=50;
    XL=0;
    ZS=RS+1i*XS;
    ZL=RL+1i*XL;
for f=1:num_of_point

    AA=squeeze(ABCD(1,1,:,f));
    BB=squeeze(ABCD(1,2,:,f));
    CC=squeeze(ABCD(2,1,:,f));
    DD=squeeze(ABCD(2,2,:,f));
    Denominator=(AA+BB/50+CC*50+DD);
    S21_all(f,:)=-20*log10(abs(2./Denominator));   %由ABCD矩阵计算S21
    S11_all(f,:)=abs((AA+BB/50-CC*50-DD)./Denominator);
    VSWR1(f,:)=(1+S11_all(f,:))./(1-S11_all(f,:));
    S22_all(f,:)=abs((-AA+BB/50-CC*50+DD)./Denominator);
    VSWR2(f,:)=(1+S22_all(f,:))./(1-S22_all(f,:));
%    S11_all(f,:)=-20*log10(abs((squeeze(ABCD(1,1,:,f))+squeeze(ABCD(1,2,:,f))/50-squeeze(ABCD(2,1,:,f))*50-squeeze(ABCD(2,2,:,f)))./(squeeze(ABCD(1,1,:,f))+squeeze(ABCD(1,2,:,f))/50+squeeze(ABCD(2,1,:,f))*50+squeeze(ABCD(2,2,:,f)))));
%    polar_point(f,:)=20*log10(abs((squeeze(ABCD(1,1,:,f))+squeeze(ABCD(1,2,:,f))/50+squeeze(ABCD(2,1,:,f))*50+squeeze(ABCD(2,2,:,f))))-2);
end

%f1=6:0.1:10;
%y=abg(f1);
%y=5:-0.1:1;
%y=-[-5.65000000000000;-3.79200000000000;-2.87100000000000;-2.20100000000000;-1.75400000000000;-1.52700000000000;-1.38000000000000;-1.31900000000000;-1.25900000000000;-1.20000000000000;-1.13300000000000;-1.07500000000000;-1.02700000000000;-0.985000000000000;-0.951000000000000;-0.913000000000000;-0.885000000000000;-0.871000000000000;-0.848000000000000;-0.850000000000000;-0.859000000000000;-0.872000000000000;-0.902000000000000;-0.914000000000000;-0.909000000000000;-0.917000000000000;-0.899000000000000;-0.900000000000000;-0.885000000000000;-0.905000000000000;-0.929000000000000;-1.00300000000000;-1.05900000000000;-1.12700000000000;-1.21500000000000;-1.35400000000000;-1.66500000000000;-2.45300000000000;-4.41400000000000];
    
%y=max(y)-y+1;

z=S21_all-24;
x=frequency_1MHz./1e6;
figure(2);
plot(x,-S21_all,x,-24);
figure(3);
plot(x,z);
figure(4);
plot(x,VSWR1,x,VSWR2);

end