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

    function S21_Difference = lowpassS21_test2(Chrom )
%UNTITLED 此处显示有关此函数的摘要
%   此处显示详细说明
ChromCopy=Chrom;
[RowLocation,ColumnLocation]=find(Chrom==0);
num=size(RowLocation);
if num>=1
  for k=1:num
      ChromCopy(RowLocation(k),ColumnLocation(k))=0.1;
  end
end
column_of_capacotor=1:2:5;
ChromCopy(:,column_of_capacotor)=ChromCopy(:,column_of_capacotor)/10;
[num_of_individual,num_of_variable]=size(ChromCopy);
frequency_10MHz=[1 2 3 4 5 6 7 8 9 10 20 21 22 23 24 25 26 27 28 29 30];
num_of_point=size(frequency_10MHz,2);
ABCD=zeros(2,2,num_of_individual,num_of_point);
for f=1:num_of_point
  for k=1:num_of_individual
    ABCD(:,:,k,f)=[1 0;2*pi*1e-5*frequency_10MHz(f)*ChromCopy(k,1)*1i 1]*[1 0.02*pi*frequency_10MHz(f)*ChromCopy(k,2)*1i;0 1]*...
[1 0;2*pi*1e-5*frequency_10MHz(f)*ChromCopy(k,3)*1i 1]*[1 0.02*pi*frequency_10MHz(f)*ChromCopy(k,4)*1i;0 1]*[1 0;2*pi*1e-5*frequency_10MHz(f)*ChromCopy(k,5)*1i 1];
  end
end
S21_all=zeros(num_of_point,num_of_individual);
for f=1:num_of_point
S21_all(f,:)=-20*log10(abs(2./(squeeze(ABCD(1,1,:,f))+squeeze(ABCD(1,2,:,f))/50+squeeze(ABCD(2,1,:,f))*50+squeeze(ABCD(2,2,:,f)))));
end
S21_passband=zeros(num_of_individual,1);
S21_stopband=zeros(num_of_individual,1);
S21_Difference=zeros(num_of_individual,1);
for k=1:num_of_individual
    S21_passband(k)=max(S21_all(1:10,k));
    S21_stopband(k)=min(S21_all(11:21,k));
    if S21_passband(k)>=0.5                     %惩罚措施
        S21_passband(k)=S21_passband(k)*10;
    end
    if S21_stopband(k)<=35                     %惩罚措施
        S21_stopband(k)=S21_stopband(k)/10;
    end
    S21_Difference(k)=S21_passband(k)-S21_stopband(k);
end

end