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

    function [ ] = plot_s21(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(ChromCopy);                       %提取出种群的个体数目和变量数


%frequency_1GHz=1e9.*[6 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 ...
%    7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 ...
%    8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 ...
%    9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10]-5;
frequency_1MHz=1e6.*[30.0 30.1 30.2 30.3 30.4 30.5 30.6 30.7 30.8 30.9 ...
    31.0 31.1 31.2 31.3 31.4 31.5 31.6 31.7 31.8 31.9 ...
    32.0 32.1 32.2 32.3 32.4 32.5 32.6 32.7 32.8 32.9 ...
    33.0 33.1 33.2 33.3 33.4];
num_of_point=length(frequency_1MHz);               %用于计算的频率点的数目



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

for f=1:num_of_point              %频率点循环
  w=2*pi*frequency_1MHz(f);
  for k=1:num_of_individual       %个体循环
%    ABCD(:,:,k,f)=[1 0;1/(1i*w*L0)+1i*w*C0 1];
     ABCD(:,:,k,f)=[1 0;0 1];
    for m=2:ChromCopy(k,1)+1

      increment=(m-2)*num_parameter;
      electrical_length=0/360*2*pi*frequency_1MHz(f)/3e7;
      Z01=Chrom(k,column_of_compoment(1+increment));
      electrical_length1=Chrom(k,column_of_compoment(2+increment))/360*2*pi*frequency_1MHz(f)/3e7;
      Z02=Chrom(k,column_of_compoment(3+increment));
      electrical_length2=Chrom(k,column_of_compoment(4+increment))/360*2*pi*frequency_1MHz(f)/3e7;
      R=Chrom(k,column_of_compoment(5+increment));
      
      switch Chrom(k,num_structure(m))         %判断单元电路的结构
        case 1                     %1代表传输线
          A=cos(electrical_length1);
          B=1i*Z01*sin(electrical_length1);
          C=1i*sin(electrical_length1)/Z01;
          D=cos(electrical_length1);
        case 2                     %2代表开路并联传输线
          A=1;
          B=0;
          C=1i*tan(electrical_length1)/Z01;
          D=1;
        case 3                     %4代表两段的开路并联传输线
          A=1;
          B=0;
          C=1i*(Z02*tan(electrical_length1)+Z01*tan(electrical_length2))/(Z02*(Z01-Z02*tan(electrical_length1)*tan(electrical_length2)));
          D=1; 
        case 4                     %8代表开路并联传输线+电阻
          Yin1=1i*tan(electrical_length1)/(Z01+1i*tan(electrical_length1)*R);
          Zin1=1/Yin1;
          Zin=Z01*(Zin1+1i*Z01*tan(electrical_length))/(Z01+1i*Zin1*tan(electrical_length));
          A=1;
          B=0;
          C=1/Zin;
          D=1;
        case 5                     %9代表两段的开路并联传输线+电阻
          Yin1=1/((Z02*(Z01-Z02*tan(electrical_length1)*tan(electrical_length2)))/(1i*(Z02*tan(electrical_length1)+Z01*tan(electrical_length2)))+R);
          Zin1=1/Yin1;
          Zin=Z02*(Zin1+1i*Z02*tan(electrical_length))/(Z02+1i*Zin1*tan(electrical_length));
          A=1;
          B=0;
          C=1/Zin;
          D=1;
      end
      ABCD(:,:,k,f)=ABCD(:,:,k,f)*[A B;C D];

    end

  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=[49.0210000000000;54.1200000000000;59.8070000000000;63.8960000000000;64.4550000000000;61.8370000000000;57.9790000000000;54.5530000000000;52.5190000000000;52.0880000000000;53.1230000000000;55.3440000000000;58.0970000000000;60.5190000000000;61.8130000000000;61.5460000000000;60.0180000000000;57.8020000000000;55.7530000000000;54.3910000000000;53.8160000000000;54.0720000000000;54.8270000000000;55.6010000000000;55.9040000000000;55.3950000000000;54.1590000000000;52.5490000000000;51.1530000000000;50.4750000000000;50.9470000000000;53.4130000000000;59.5340000000000;64.8080000000000;50.7030000000000];
    XL=[14.2810000000000;16.9300000000000;16.6610000000000;13.2430000000000;8.30800000000000;4.91000000000000;4.02400000000000;5.48900000000000;8.29900000000000;11.5030000000000;14.3500000000000;16.1950000000000;16.5420000000000;15.4510000000000;13.1240000000000;10.6330000000000;8.74400000000000;7.94300000000000;8.30900000000000;9.42500000000000;10.8280000000000;12.0210000000000;12.5460000000000;12.3400000000000;11.5010000000000;10.4410000000000;9.79800000000000;10;11.0980000000000;12.9300000000000;15.2590000000000;17.5680000000000;17.6080000000000;6.71100000000000;-1.47100000000000];
    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=-[-1.02400000000000;-1.00700000000000;-0.963000000000000;-0.926000000000000;-0.882000000000000;-0.809000000000000;-0.804000000000000;-0.783000000000000;-0.766000000000000;-0.782000000000000;-0.805000000000000;-0.806000000000000;-0.816000000000000;-0.818000000000000;-0.797000000000000;-0.779000000000000;-0.746000000000000;-0.747000000000000;-0.736000000000000;-0.740000000000000;-0.784000000000000;-0.787000000000000;-0.795000000000000;-0.820000000000000;-0.827000000000000;-0.839000000000000;-0.839000000000000;-0.909000000000000;-0.967000000000000;-1.06400000000000;-1.22700000000000;-1.49100000000000;-2.05400000000000;-3.48400000000000;-6.76900000000000];
y=max(y)-y;
z=S21_all-y;
x=frequency_1MHz./1e6;
figure(2);
plot(x,-S21_all,x,-y);
figure(3);
plot(x,z);
figure(4);
plot(x,VSWR1,x,VSWR2);

end