📄 am_sys2.m
字号:
function [ret,x0,str,ts,xts]=am_sys2(t,x,u,flag);
%AM_SYS2 is the M-file description of the SIMULINK system named AM_SYS2.
% The block-diagram can be displayed by typing: AM_SYS2.
%
% SYS=AM_SYS2(T,X,U,FLAG) returns depending on FLAG certain
% system values given time point, T, current state vector, X,
% and input vector, U.
% FLAG is used to indicate the type of output to be returned in SYS.
%
% Setting FLAG=1 causes AM_SYS2 to return state derivatives, FLAG=2
% discrete states, FLAG=3 system outputs and FLAG=4 next sample
% time. For more information and other options see SFUNC.
%
% Calling AM_SYS2 with a FLAG of zero:
% [SIZES]=AM_SYS2([],[],[],0), returns a vector, SIZES, which
% contains the sizes of the state vector and other parameters.
% SIZES(1) number of states
% SIZES(2) number of discrete states
% SIZES(3) number of outputs
% SIZES(4) number of inputs
% SIZES(5) number of roots (currently unsupported)
% SIZES(6) direct feedthrough flag
% SIZES(7) number of sample times
%
% For the definition of other parameters in SIZES, see SFUNC.
% See also, TRIM, LINMOD, LINSIM, EULER, RK23, RK45, ADAMS, GEAR.
% Note: This M-file is only used for saving graphical information;
% after the model is loaded into memory an internal model
% representation is used.
% the system will take on the name of this mfile:
sys = mfilename;
new_system(sys)
simver(1.3)
if (0 == (nargin + nargout))
set_param(sys,'Location',[4,42,626,466])
open_system(sys)
end;
set_param(sys,'algorithm', 'RK-45')
set_param(sys,'Start time', '0.0')
set_param(sys,'Stop time', '999999')
set_param(sys,'Min step size', '0.00001')
set_param(sys,'Max step size', '0.01')
set_param(sys,'Relative error','1e-3')
set_param(sys,'Return vars', '')
add_block('built-in/Note',[sys,'/','同步调制//解调 AM 系统 ( 双边带 DSB )'])
set_param([sys,'/','同步调制//解调 AM 系统 ( 双边带 DSB )'],...
'Font Name','宋体',...
'Font Size',12,...
'position',[265,5,270,10])
add_block('built-in/State-Space',[sys,'/',['Butterworth',13,'BP 滤波器']])
set_param([sys,'/',['Butterworth',13,'BP 滤波器']],...
'ForeGround',5,...
'Font Name','宋体',...
'Font Size',12,...
'A','at',...
'B','bt',...
'C','ct',...
'D','dt',...
'Mask Display','plot(w,mag)',...
'Mask Type','buttap,lp2bp')
set_param([sys,'/',['Butterworth',13,'BP 滤波器']],...
'Mask Dialogue','Analog Butterworth band pass filter.\n\n(Requires Signal Processing Toolbox)|Center frequency (rad/sec)|Bandwidth (rad/sec):|Order')
set_param([sys,'/',['Butterworth',13,'BP 滤波器']],...
'Mask Translate','[at,bt,ct,dt,w,mag]=filtm(''buttap'',''lp2bp'',@1,@2,50,@3);',...
'Mask Help','Butterworth band pass filter using MATLAB''s butter and lp2bp command.')
set_param([sys,'/',['Butterworth',13,'BP 滤波器']],...
'Mask Entries','200\/10\/4\/',...
'position',[110,194,170,236])
add_block('built-in/Scope',[sys,'/','提取出的载波'])
set_param([sys,'/','提取出的载波'],...
'ForeGround',5,...
'Font Name','宋体',...
'Font Size',12,...
'Vgain','4.000000',...
'Hgain','1.000000',...
'Vmax','8.000000',...
'Hmax','2.000000',...
'Window',[76,196,407,340])
open_system([sys,'/','提取出的载波'])
set_param([sys,'/','提取出的载波'],...
'position',[520,200,550,230])
add_block('built-in/Gain',[sys,'/','增益'])
set_param([sys,'/','增益'],...
'ForeGround',5,...
'Font Name','宋体',...
'Font Size',12,...
'Gain','4',...
'position',[195,202,220,228])
add_block('built-in/Transport Delay',[sys,'/','传输延迟'])
set_param([sys,'/','传输延迟'],...
'Font Name','宋体',...
'Font Size',12,...
'Delay Time','0.09',...
'position',[135,335,175,365])
add_block('built-in/Product',[sys,'/','乘法器2'])
set_param([sys,'/','乘法器2'],...
'Font Name','宋体',...
'Font Size',12,...
'Mask Display','plot([0 1],[1 0],[0 1],[0 1]);',...
'Mask Type','乘法器',...
'Mask Dialogue','乘法器',...
'position',[250,334,280,356])
add_block('built-in/Scope',[sys,'/','解调后信号波形'])
set_param([sys,'/','解调后信号波形'],...
'Font Name','宋体',...
'Font Size',12,...
'Vgain','3.000000',...
'Hgain','1.000000',...
'Vmax','6.000000',...
'Hmax','2.000000',...
'Window',[309,325,640,480])
open_system([sys,'/','解调后信号波形'])
set_param([sys,'/','解调后信号波形'],...
'position',[520,330,550,360])
add_block('built-in/Scope',[sys,'/',['提取出的载波与',13,'接收信号的乘积']])
set_param([sys,'/',['提取出的载波与',13,'接收信号的乘积']],...
'Font Name','宋体',...
'Font Size',12,...
'Vgain','4.000000',...
'Hgain','1.000000',...
'Vmax','8.000000',...
'Hmax','2.000000',...
'Window',[183,253,512,423])
open_system([sys,'/',['提取出的载波与',13,'接收信号的乘积']])
set_param([sys,'/',['提取出的载波与',13,'接收信号的乘积']],...
'position',[520,265,550,295])
add_block('built-in/Note',[sys,'/','同步载波提取'])
set_param([sys,'/','同步载波提取'],...
'Font Name','宋体',...
'Font Size',12,...
'position',[300,170,305,175])
add_block('built-in/Note',[sys,'/','接收端'])
set_param([sys,'/','接收端'],...
'Font Name','宋体',...
'Font Size',12,...
'position',[30,175,35,180])
add_block('built-in/Note',[sys,'/','已调 DSB 信号'])
set_param([sys,'/','已调 DSB 信号'],...
'Font Name','宋体',...
'Font Size',12,...
'position',[320,85,325,90])
add_block('built-in/Note',[sys,'/','发送端'])
set_param([sys,'/','发送端'],...
'Font Name','宋体',...
'Font Size',12,...
'position',[295,100,300,105])
add_block('built-in/Note',[sys,'/','Y(t) = X(t)*cos(Wc*t+p)'])
set_param([sys,'/','Y(t) = X(t)*cos(Wc*t+p)'],...
'Font Name','宋体',...
'Font Size',12,...
'position',[345,60,350,65])
add_block('built-in/Product',[sys,'/','乘法器'])
set_param([sys,'/','乘法器'],...
'Font Name','宋体',...
'Font Size',12,...
'Mask Display','plot([0 1],[1 0],[0 1],[0 1]);',...
'Mask Type','乘法器',...
'Mask Dialogue','乘法器',...
'position',[215,74,245,96])
add_block('built-in/Note',[sys,'/','X(t)'])
set_param([sys,'/','X(t)'],...
'Font Name','宋体',...
'Font Size',12,...
'position',[150,55,155,60])
add_block('built-in/Signal Generator',[sys,'/',['信号发生器',13,'频率(弧度//秒)']])
set_param([sys,'/',['信号发生器',13,'频率(弧度//秒)']],...
'Font Name','宋体',...
'Font Size',12,...
'Peak','1.000000',...
'Peak Range','5.000000',...
'Freq','10.000000',...
'Freq Range','50.000000',...
'Wave','Sin')
set_param([sys,'/',['信号发生器',13,'频率(弧度//秒)']],...
'Units','Rads',...
'position',[35,63,80,97])
add_block('built-in/Sine Wave',[sys,'/','载波'])
set_param([sys,'/','载波'],...
'Font Name','宋体',...
'Font Size',12,...
'frequency','100',...
'position',[50,130,70,150])
add_block('built-in/Note',[sys,'/','调制信号'])
set_param([sys,'/','调制信号'],...
'Font Name','宋体',...
'Font Size',12,...
'position',[60,35,65,40])
add_block('built-in/Gain',[sys,'/','增益1'])
set_param([sys,'/','增益1'],...
'ForeGround',5,...
'Font Name','宋体',...
'Font Size',12,...
'Gain','4',...
'position',[435,202,460,228])
add_block('built-in/State-Space',[sys,'/',['Butterworth',13,'BP 滤波器1']])
set_param([sys,'/',['Butterworth',13,'BP 滤波器1']],...
'ForeGround',5,...
'Font Name','宋体',...
'Font Size',12,...
'A','at',...
'B','bt',...
'C','ct',...
'D','dt',...
'Mask Display','plot(w,mag)',...
'Mask Type','buttap,lp2bp')
set_param([sys,'/',['Butterworth',13,'BP 滤波器1']],...
'Mask Dialogue','Analog Butterworth band pass filter.\n\n(Requires Signal Processing Toolbox)|Center frequency (rad/sec)|Bandwidth (rad/sec):|Order')
set_param([sys,'/',['Butterworth',13,'BP 滤波器1']],...
'Mask Translate','[at,bt,ct,dt,w,mag]=filtm(''buttap'',''lp2bp'',@1,@2,50,@3);',...
'Mask Help','Butterworth band pass filter using MATLAB''s butter and lp2bp command.')
set_param([sys,'/',['Butterworth',13,'BP 滤波器1']],...
'Mask Entries','100\/10\/4\/',...
'position',[345,194,405,236])
add_block('built-in/MATLAB Fcn',[sys,'/','二分频'])
set_param([sys,'/','二分频'],...
'ForeGround',5,...
'Font Name','宋体',...
'Font Size',12,...
'MATLAB Fcn','df2',...
'Mask Display','Frequency\n—————\n2',...
'Mask Type','分频器',...
'Mask Dialogue','二分频器')
set_param([sys,'/','二分频'],...
'position',[245,196,315,234])
add_block('built-in/Product',[sys,'/','平方运算'])
set_param([sys,'/','平方运算'],...
'ForeGround',5,...
'Font Name','宋体',...
'Font Size',12,...
'Mask Display','plot([0 1],[1 0],[0 1],[0 1]);',...
'Mask Type','乘法器',...
'Mask Dialogue','乘法器',...
'position',[45,204,75,226])
add_block('built-in/Note',[sys,'/',['弥补提取载波',13,'所需的时延']])
set_param([sys,'/',['弥补提取载波',13,'所需的时延']],...
'Font Name','宋体',...
'Font Size',12,...
'position',[135,295,140,300])
add_block('built-in/Zero-Pole',[sys,'/',['Butterworth',13,'LP 滤波器']])
set_param([sys,'/',['Butterworth',13,'LP 滤波器']],...
'Font Name','宋体',...
'Font Size',12,...
'Zeros','z',...
'Poles','p',...
'Gain','k',...
'Mask Display','plot(20*log10(w),20*log10(abs(h)))',...
'Mask Type','buttap')
set_param([sys,'/',['Butterworth',13,'LP 滤波器']],...
'Mask Dialogue','Analog Butterworth low pass filter.\n\n(Requires Signal Processing Toolbox)|Cutoff frequency (rad/sec)|Order')
set_param([sys,'/',['Butterworth',13,'LP 滤波器']],...
'Mask Translate','[z,p,k]=buttap(@2); z=@1*z; p=@1*p; k=real(prod(-p)); [num,den]=zp2tf(z,p,k); w=logspace(log10(@1/10),log10(10*@1),20); h=freqs(num,den,w); ')
set_param([sys,'/',['Butterworth',13,'LP 滤波器']],...
'Mask Help','Butterworth low pass filter using MATLAB''s butter command.',...
'Mask Entries','10\/4\/',...
'position',[385,323,445,367])
add_block('built-in/Note',[sys,'/',['cos ( Wc * t + p )',13,'Wc 载波角频率',13,'p 载波初始相位']])
set_param([sys,'/',['cos ( Wc * t + p )',13,'Wc 载波角频率',13,'p 载波初始相位']],...
'Font Name','宋体',...
'Font Size',12,...
'position',[175,105,180,110])
add_block('built-in/Note',[sys,'/','传输信道'])
set_param([sys,'/','传输信道'],...
'position',[245,150,250,155])
add_block('built-in/Scope',[sys,'/','调制后信号波形'])
set_param([sys,'/','调制后信号波形'],...
'Font Name','宋体',...
'Font Size',12,...
'Vgain','2.000000',...
'Hgain','1.000000',...
'Vmax','4.000000',...
'Hmax','2.000000',...
'Window',[2,106,333,250])
open_system([sys,'/','调制后信号波形'])
set_param([sys,'/','调制后信号波形'],...
'position',[520,70,550,100])
% Subsystem '谱分析'.
new_system([sys,'/','谱分析'])
set_param([sys,'/','谱分析'],'Location',[0,0,371,185])
add_block('built-in/Mux',[sys,'/','谱分析/Mux'])
set_param([sys,'/','谱分析/Mux'],...
'inputs','2',...
'position',[145,71,175,104])
add_block('built-in/Inport',[sys,'/','谱分析/system output'])
set_param([sys,'/','谱分析/system output'],...
'Port','2',...
'position',[55,110,75,130])
add_block('built-in/S-Function',[sys,'/',['谱分析/S-function block',13,'which calls M-file']])
set_param([sys,'/',['谱分析/S-function block',13,'which calls M-file']],...
'function name','sfuntf',...
'parameters','fftpts,npts,HowOften,offset,ts,0',...
'position',[250,72,295,108])
add_block('built-in/Inport',[sys,'/','谱分析/system input'])
set_param([sys,'/','谱分析/system input'],...
'position',[55,30,75,50])
add_line([sys,'/','谱分析'],[80,120;110,120;110,95;140,95])
add_line([sys,'/','谱分析'],[80,40;110,40;110,80;140,80])
add_line([sys,'/','谱分析'],[180,90;245,90])
set_param([sys,'/','谱分析'],...
'Mask Display','plot(0,0,100,100,[11,93,93,11,11],[90,90,40,40,90],[90,80,72,64,55,45,41,36,20],[50,50,52,59,67,75,78,80,80])',...
'Mask Type','Spectrum analyzer.')
set_param([sys,'/','谱分析'],...
'Mask Dialogue','Spectrum analyser using graph window.\nHook input 1 to system input.\nHook input 2 to system output.|Length of buffer:|Number of points for fft:|Plot after how many points:|Sample time:')
set_param([sys,'/','谱分析'],...
'Mask Translate','npts=@1; fftpts=@2; HowOften=@3; ts=@4(1); if length(@4) > 1, offset = @4(2), else, offset = 0; end')
set_param([sys,'/','谱分析'],...
'Mask Help','Hook the system''s input to the first port of this block and the system''s output to second port. Results are displayed as the frequency response of this system. Use signals with high harmonic content for best results. ')
set_param([sys,'/','谱分析'],...
'Mask Entries','512\/512\/64\/0.001\/')
% Finished composite block '谱分析'.
set_param([sys,'/','谱分析'],...
'Font Name','宋体',...
'Font Size',12,...
'Drop Shadow',4,...
'position',[520,120,550,160])
add_line(sys,[85,80;210,80])
add_line(sys,[75,140;110,140;110,90;210,90])
add_line(sys,[250,85;515,85])
add_line(sys,[80,215;105,215])
add_line(sys,[175,215;190,215])
add_line(sys,[225,215;240,215])
add_line(sys,[320,215;340,215])
add_line(sys,[410,215;430,215])
add_line(sys,[465,215;515,215])
add_line(sys,[180,350;245,350])
add_line(sys,[480,215;480,265;210,265;210,340;245,340])
add_line(sys,[285,345;380,345])
add_line(sys,[450,345;515,345])
add_line(sys,[305,345;305,280;515,280])
add_line(sys,[270,85;270,170;5,170;5,350;130,350])
add_line(sys,[5,220;40,220])
add_line(sys,[5,210;40,210])
add_line(sys,[180,80;180,45;455,45;455,150;515,150])
add_line(sys,[480,85;480,130;515,130])
drawnow
% Return any arguments.
if (nargin | nargout)
% Must use feval here to access system in memory
if (nargin > 3)
if (flag == 0)
eval(['[ret,x0,str,ts,xts]=',sys,'(t,x,u,flag);'])
else
eval(['ret =', sys,'(t,x,u,flag);'])
end
else
[ret,x0,str,ts,xts] = feval(sys);
end
else
drawnow % Flash up the model and execute load callback
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -