gusucode.com > matlab编程遗传算法计算匹配电路源码程序 > code1/code/MATLAB源代码/bandpassS21_test2.m
function S21_Difference = bandpassS21_test2(Chrom) %UNTITLED3 此处显示有关此函数的摘要 % 此处显示详细说明 ChromCopy=Chrom+1; %复制矩阵 %column_of_compoment=[11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30]; %代表元件值的基因所在列的列标号 column_of_compoment=[6 7 8 9 10 11 12 13 14 15]; %代表元件值的基因所在列的列标号 num_of_component=length(column_of_compoment); %元件的个数 %num_structure=[1 2 3 4 5 6 7 8 9 10]; %单元结构的标号 num_structure=[1 2 3 4 5]; %单元结构的标号 ChromCopy(:,column_of_compoment)=ChromCopy(:,column_of_compoment)/10; %元件值范围为【0.1 250】,精度为0.1 [num_of_individual,num_of_variable]=size(ChromCopy); %提取出种群的个体数目和变量数 %frequency_10MHz=[45 46 47 48 49 50 51 52 53 54 55 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80]; %设置需要计算的频率点 frequency_10MHz=[45 46 47 48 49 50 51 52 53 54 55 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100]; %设置需要计算的频率点 expectations_of_S21=crtbase([11 71],[0 40])'; %expectations_of_S21=[0 0 0 0 0 0 0 0 0 0 0 98 96 94 92 90 88 86 84 82 80 78 76 74 72 70 68 66 64 62 60 58 56 54 52 50 48 46 44 42 40 38 36 34 32 30 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100]'; %num_of_point=size(frequency_10MHz,2); num_of_point=length(frequency_10MHz); %用于计算的频率点的数目 ABCD=zeros(2,2,num_of_individual,num_of_point); %预先给ABCD矩阵分配内存空间 for f=1:num_of_point %频率点循环 for k=1:num_of_individual %个体循环 structure=zeros(2,2,num_of_component/2); %预先给structure矩阵分配内存空间,共包括5个单元结构 % num_structure=[1 2 3 4 5 6 7 8 9 10]; %单元结构的标号 for i=1:2:num_of_component switch ChromCopy(k,num_structure((i+1)/2)) %判断单元电路的结构 case 1 %1代表空单元 structure(:,:,(i+1)/2)=[1 0;0 1]; case 2 %2代表串联L structure(:,:,(i+1)/2)=[1 2*pi*frequency_10MHz(f)*1e7*ChromCopy(k,column_of_compoment(i))*1e-9*1i;0 1]; case 3 %3代表串联C structure(:,:,(i+1)/2)=[1 1/(2*pi*frequency_10MHz(f)*1e7*ChromCopy(k,column_of_compoment(i))*1e-12*1i);0 1]; case 4 %4代表并联L structure(:,:,(i+1)/2)=[1 0;1/(2*pi*frequency_10MHz(f)*1e7*ChromCopy(k,column_of_compoment(i))*1e-9*1i) 1]; case 5 %5代表并联C structure(:,:,(i+1)/2)=[1 0;2*pi*frequency_10MHz(f)*1e7*ChromCopy(k,column_of_compoment(i))*1e-12*1i 1]; case 6 %6代表串联的串联LC structure(:,:,(i+1)/2)=[1 2*pi*frequency_10MHz(f)*1e7*ChromCopy(k,column_of_compoment(i))*1e-9*1i+1/(2*pi*frequency_10MHz(f)*1e7*ChromCopy(k,column_of_compoment(i+1))*1e-12*1i);0 1]; case 7 %7代表串联的并联LC structure(:,:,(i+1)/2)=[1 1/(2*pi*frequency_10MHz(f)*1e7*ChromCopy(k,column_of_compoment(i+1))*1e-12*1i+1/(2*pi*frequency_10MHz(f)*1e7*ChromCopy(k,column_of_compoment(i))*1e-9*1i));0 1]; case 8 %8代表并联的串联LC structure(:,:,(i+1)/2)=[1 0;1/(2*pi*frequency_10MHz(f)*1e7*ChromCopy(k,column_of_compoment(i))*1e-9*1i+1/(2*pi*frequency_10MHz(f)*1e7*ChromCopy(k,column_of_compoment(i+1))*1e-12*1i)) 1]; case 9 %9代表并联的并联LC structure(:,:,(i+1)/2)=[1 0;2*pi*frequency_10MHz(f)*1e7*ChromCopy(k,column_of_compoment(i+1))*1e-12*1i+1/(2*pi*frequency_10MHz(f)*1e7*ChromCopy(k,column_of_compoment(i))*1e-9*1i) 1]; % case 10 %10代表变压器 % structure(:,:,(i+1)/2)=[ChromCopy(k,column_of_compoment(i)) 0;0 1/(ChromCopy(k,column_of_compoment(i)))]; end end ABCD(:,:,k,f)=structure(:,:,1)*structure(:,:,2)*structure(:,:,3)*structure(:,:,4)*structure(:,:,5);%*structure(:,:,6)*structure(:,:,7)*structure(:,:,8)*structure(:,:,9)*structure(:,:,10); 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))))); %由ABCD矩阵计算S21 end S21_Difference=zeros(num_of_individual,1); for k=1:num_of_individual S21_Difference(k,1)=sum((S21_all(1:11,k)-expectations_of_S21(1:11)).^2)+0.1*sum((S21_all(12:num_of_point,k)-expectations_of_S21(12:num_of_point)).^2); end end