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