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