⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 write_spice_file.m

📁 均衡器的参数设置,设置不同的参数
💻 M
字号:
%% write_spice_file.m%%% This function generates a SPICE .cir file. To trace the output of all% the filters in SPICE, trace something like VDB(51) + VDB(52) + ... +% VDB(510)+....  The w0 and n inputs are also needed. The function doesn't% return anything.function write_spice_file(r1,r2,r5,c3,c4,w0,n)%%%% Header%%%%% These lines are responsible for creating a SPICE voltage source, and% definining a subcircuit which will be used for all of the OP AMPS in the% equalizer.  The SPICE file is written into the directory defined by% MatLab's cd.    file_1 = fopen(strcat(cd,'/EQ_gen_spice_output.cir'),'wt');    fprintf(file_1,'EQgenerator SPICE OUTPUT\n');    fprintf(file_1,'VS	1	0	AC	1 \n');    fprintf(file_1,'.SUBCKT OPAMP 1 2 3\n');    fprintf(file_1,'RI	1	2 	100MEG\n');    fprintf(file_1,'EA	3	0	1	2	100MEG\n');    fprintf(file_1,'.ENDS OPAMP\n');%%%% Creating the Equalizer in SPICE%%% For each filter, the appropriate SPICE lines are written.  Circuit% element names are a combination of their name in terms of the multiple% feedback filter topology and the current filter being written.  For% example, R12 is R1 in the second filter of equalizer.  Node names are% created in a similar fashion.      for filter_n = 1:n                %write spice comment indicating which filter we're on        s = sprintf('*Center Frequency: f0 =  %d\n', w0(filter_n)/(2*pi));        fprintf(file_1,s);                index_n = num2str(filter_n);                %write the r1 line of the current filter                r1_value = sprintf('   %d    ',r1(filter_n));        node_1 = sprintf('    %d     ',1);        node_2 = strcat('2',num2str(index_n));        node_2 = sprintf('    %d     ', str2double(node_2));        s = strcat('R1',index_n,node_1,node_2,r1_value,'\n');        fprintf(file_1,s);                %write the r2 line of the current filter               r2_value = sprintf('   %d    ',r2(filter_n));        node_1 = strcat('2',num2str(index_n));        node_1 = sprintf('    %d     ', str2double(node_1));        node_2 = sprintf('    0      ');        s = strcat('R2',index_n,node_1,node_2,r2_value,'\n');        fprintf(file_1,s);                       %write the c3 line of the current filter        c3_value = sprintf('   %g    ',c3(filter_n));        node_1 = strcat('2',num2str(index_n));        node_1 = sprintf('    %d     ', str2double(node_1));        node_2 = strcat('3',num2str(index_n));        node_2 = sprintf('    %d     ', str2double(node_2));        s = strcat('C3',index_n,node_1,node_2,c3_value,'\n');        fprintf(file_1,s);                        %write the c4 line of the current filter        c4_value = sprintf('   %g    ',c4(filter_n));                node_1 = strcat('2',num2str(index_n));        node_1 = sprintf('    %d     ', str2double(node_1));        node_2 = strcat('5',num2str(index_n));        node_2 = sprintf('    %d     ', str2double(node_2));        s = strcat('C4',index_n,node_1,node_2,c4_value,'\n');        fprintf(file_1,s);                        %write the r5 line of the current filter        r5_value = sprintf('   %g    ',r5(filter_n));        node_1 = strcat('3',num2str(index_n));        node_1 = sprintf('    %d     ', str2double(node_1));        node_2 = strcat('5',num2str(index_n));        node_2 = sprintf('    %d     ', str2double(node_2));         s = strcat('R5',index_n,node_1,node_2,r5_value,'\n');        fprintf(file_1,s);                %write the subcircuit line        x_value = sprintf('   OPAMP    ');        node_1 = strcat('3',num2str(index_n));        node_1 = sprintf('     %d     ', str2double(node_1));        node_2 = strcat('5',num2str(index_n));        node_2 = sprintf('    %d     ', str2double(node_2));        node_0 = sprintf('    %d      ',0);        s = strcat('X',index_n,node_0,node_1,node_2,x_value,'\n');        fprintf(file_1,s);                            end%%%% Footer%%% After the circuit has been completed, the following lines prepare the AC% analysis and finish up the file.    low_freq = sprintf('    %g    ',(w0(1)/(2*pi))*.01);    high_freq = sprintf('    %g   ',(w0(n)/(2*pi))*100);    s = strcat('.AC DEC 50',low_freq,high_freq,'\n');    fprintf(file_1,s);    fprintf(file_1,'.PROBE\n');    fprintf(file_1,'.END\n');%%    end  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -