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