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

📄 simulink.m

📁 数字通信第四版原书的例程
💻 M
📖 第 1 页 / 共 4 页
字号:
function [ret,x0,str,ts,xts]=simulink(t,x,u,flag);
%SIMULINK	is the M-file description of the SIMULINK system named SIMULINK.
%	The block-diagram can be displayed by typing: SIMULINK.
%
%	SYS=SIMULINK(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 SIMULINK 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 SIMULINK with a FLAG of zero:
%	[SIZES]=SIMULINK([],[],[],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',[19,60,486,181])
     open_system(sys)
end;
set_param(sys,'algorithm',     'Euler')
set_param(sys,'Start time',    '0.0')
set_param(sys,'Stop time',     '1')
set_param(sys,'Min step size', '0.1')
set_param(sys,'Max step size', '0.1')
set_param(sys,'Relative error','1e-3')
set_param(sys,'Return vars',   '')


%     Subsystem  'Linear'.

new_system([sys,'/','Linear'])
set_param([sys,'/','Linear'],'Location',[160,253,354,586])

add_block('built-in/Note',[sys,'/','Linear/Linear Library'])
set_param([sys,'/','Linear/Linear Library'],...
		'position',[100,5,105,10])


%     Subsystem  ['Linear/Inner',13,'Product'].

new_system([sys,'/',['Linear/Inner',13,'Product']])
set_param([sys,'/',['Linear/Inner',13,'Product']],'Location',[33,479,253,634])

add_block('built-in/Inport',[sys,'/',['Linear/Inner',13,'Product/in_1']])
set_param([sys,'/',['Linear/Inner',13,'Product/in_1']],...
		'position',[15,25,35,45])

add_block('built-in/Inport',[sys,'/',['Linear/Inner',13,'Product/in_2']])
set_param([sys,'/',['Linear/Inner',13,'Product/in_2']],...
		'Port','2',...
		'position',[15,90,35,110])

add_block('built-in/Outport',[sys,'/',['Linear/Inner',13,'Product/out_1']])
set_param([sys,'/',['Linear/Inner',13,'Product/out_1']],...
		'position',[185,55,205,75])

add_block('built-in/Sum',[sys,'/',['Linear/Inner',13,'Product/Sum']])
set_param([sys,'/',['Linear/Inner',13,'Product/Sum']],...
		'inputs','+',...
		'position',[125,55,145,75])

add_block('built-in/Product',[sys,'/',['Linear/Inner',13,'Product/Product']])
set_param([sys,'/',['Linear/Inner',13,'Product/Product']],...
		'position',[65,55,90,75])
add_line([sys,'/',['Linear/Inner',13,'Product']],[150,65;180,65])
add_line([sys,'/',['Linear/Inner',13,'Product']],[95,65;120,65])
add_line([sys,'/',['Linear/Inner',13,'Product']],[40,35;60,60])
add_line([sys,'/',['Linear/Inner',13,'Product']],[40,100;60,70])
set_param([sys,'/',['Linear/Inner',13,'Product']],...
		'Mask Display','.\n',...
		'Mask Type','Dot Product',...
		'Mask Dialogue','Inner (dot) product.\ny=sum(u1.*u2)')
set_param([sys,'/',['Linear/Inner',13,'Product']],...
		'Mask Help','Computes the inner (dot) product of the inputs: sum(u1.*u2).  The inputs are vectors of the same length. Output is a scalar.')


%     Finished composite block ['Linear/Inner',13,'Product'].

set_param([sys,'/',['Linear/Inner',13,'Product']],...
		'position',[130,39,150,61])

add_block('built-in/Sum',[sys,'/','Linear/Sum'])
set_param([sys,'/','Linear/Sum'],...
		'position',[45,40,65,60])

add_block('built-in/Integrator',[sys,'/','Linear/Integrator'])
set_param([sys,'/','Linear/Integrator'],...
		'position',[45,95,65,115])

add_block('built-in/Derivative',[sys,'/','Linear/Derivative'])
set_param([sys,'/','Linear/Derivative'],...
		'position',[125,95,155,115])

add_block('built-in/Transfer Fcn',[sys,'/','Linear/Transfer Fcn'])
set_param([sys,'/','Linear/Transfer Fcn'],...
		'Denominator','[1 1]',...
		'position',[35,207,70,243])

add_block('built-in/Zero-Pole',[sys,'/','Linear/Zero-Pole'])
set_param([sys,'/','Linear/Zero-Pole'],...
		'Poles','[0; -1]',...
		'position',[115,207,160,243])

add_block('built-in/Gain',[sys,'/','Linear/Gain'])
set_param([sys,'/','Linear/Gain'],...
		'position',[20,147,45,173])

add_block('built-in/State-Space',[sys,'/',['Linear/Matrix',13,'Gain']])
set_param([sys,'/',['Linear/Matrix',13,'Gain']],...
		'A','[]',...
		'B','[]',...
		'C','[]',...
		'D','K',...
		'Mask Display','K',...
		'Mask Type','Matrix Gain',...
		'Mask Dialogue','Matrix Gain.|Gain matrix:',...
		'Mask Translate','K = @1;')
set_param([sys,'/',['Linear/Matrix',13,'Gain']],...
		'Mask Help','Multiplies input vector by entered matrix to produce output vector (y=Au).',...
		'Mask Entries','eye(3,3)\/',...
		'position',[80,146,105,174])

add_block('built-in/Gain',[sys,'/',['Linear/Slider',13,'Gain']])
set_param([sys,'/',['Linear/Slider',13,'Gain']],...
		'Gain','1.317',...
		'Mask Display','1.317',...
		'Mask Dialogue','eval(''slideg(0,1.214,2,0)'');',...
		'position',[130,146,180,174])

add_block('built-in/State-Space',[sys,'/','Linear/State-Space'])
set_param([sys,'/','Linear/State-Space'],...
		'position',[60,269,135,311])


%     Finished composite block 'Linear'.

set_param([sys,'/','Linear'],...
		'position',[210,5,240,55])


%     Subsystem  'Connections'.

new_system([sys,'/','Connections'])
set_param([sys,'/','Connections'],'Location',[340,287,463,522])

add_block('built-in/Mux',[sys,'/','Connections/Mux'])
set_param([sys,'/','Connections/Mux'],...
		'inputs','3',...
		'position',[50,124,80,156])

add_block('built-in/Demux',[sys,'/','Connections/Demux'])
set_param([sys,'/','Connections/Demux'],...
		'outputs','3',...
		'position',[45,174,85,206])

add_block('built-in/Outport',[sys,'/','Connections/Outport'])
set_param([sys,'/','Connections/Outport'],...
		'position',[55,80,75,100])

add_block('built-in/Inport',[sys,'/','Connections/Inport'])
set_param([sys,'/','Connections/Inport'],...
		'position',[55,40,75,60])

add_block('built-in/Note',[sys,'/','Connections/Library'])
set_param([sys,'/','Connections/Library'],...
		'position',[65,15,70,20])

add_block('built-in/Note',[sys,'/','Connections/Connections'])
set_param([sys,'/','Connections/Connections'],...
		'position',[65,0,70,5])


%     Finished composite block 'Connections'.

set_param([sys,'/','Connections'],...
		'position',[345,5,375,55])

add_block('built-in/Note',[sys,'/','SIMULINK Block Library (Version 1.3c)'])
set_param([sys,'/','SIMULINK Block Library (Version 1.3c)'],...
		'position',[230,85,235,90])


%     Subsystem  'Extras'.

new_system([sys,'/','Extras'])
set_param([sys,'/','Extras'],'Location',[0,0,123,235])
set_param([sys,'/','Extras'],...
		'Mask Display','',...
		'Mask Dialogue','eval(''extras'')')


%     Finished composite block 'Extras'.

set_param([sys,'/','Extras'],...
		'position',[415,5,445,55])


%     Subsystem  'Sources'.

new_system([sys,'/','Sources'])
set_param([sys,'/','Sources'],'Location',[18,195,276,532])

add_block('built-in/Note',[sys,'/','Sources/Signal Source Library'])
set_param([sys,'/','Sources/Signal Source Library'],...
		'position',[135,0,140,5])

add_block('built-in/White Noise',[sys,'/',['Sources/Random',13,'Number']])
set_param([sys,'/',['Sources/Random',13,'Number']],...
		'position',[30,257,75,293])


%     Subsystem  'Sources/Chirp Signal'.

new_system([sys,'/','Sources/Chirp Signal'])
set_param([sys,'/','Sources/Chirp Signal'],'Location',[466,243,956,594])

add_block('built-in/Clock',[sys,'/','Sources/Chirp Signal/Clock'])
set_param([sys,'/','Sources/Chirp Signal/Clock'],...
		'position',[50,75,70,95])

add_block('built-in/Fcn',[sys,'/','Sources/Chirp Signal/Fcn'])
set_param([sys,'/','Sources/Chirp Signal/Fcn'],...
		'Expr','sin(AA*u*u + BB*u)',...
		'position',[95,60,160,110])

add_block('built-in/Outport',[sys,'/','Sources/Chirp Signal/out_1'])
set_param([sys,'/','Sources/Chirp Signal/out_1'],...
		'position',[190,75,210,95])
add_line([sys,'/','Sources/Chirp Signal'],[75,85;90,85])
add_line([sys,'/','Sources/Chirp Signal'],[165,85;185,85])
set_param([sys,'/','Sources/Chirp Signal'],...
		'Mask Display','plot(t,sin(t.*t))',...
		'Mask Type','chirp')
set_param([sys,'/','Sources/Chirp Signal'],...
		'Mask Dialogue','Chirp Signal.\n(Sine wave with increasing frequency)|Initial frequency (Hz):| Target time (secs):| Frequency at target time (Hz):')
set_param([sys,'/','Sources/Chirp Signal'],...
		'Mask Translate','BB = 2*pi*@1; AA =pi*(@3 -@1)/(@2);t=[0:.1:5];')
set_param([sys,'/','Sources/Chirp Signal'],...
		'Mask Help','The chirp signal has linearly increasing frequency with time.  This block can be used for spectral analysis of nonlinear systems. ',...
		'Mask Entries','0.1\/100\/1\/')


%     Finished composite block 'Sources/Chirp Signal'.

set_param([sys,'/','Sources/Chirp Signal'],...
		'position',[190,192,230,228])


%     Subsystem  ['Sources/Repeating',13,'Sequence'].

new_system([sys,'/',['Sources/Repeating',13,'Sequence']])
set_param([sys,'/',['Sources/Repeating',13,'Sequence']],'Location',[5,40,315,196])

add_block('built-in/Clock',[sys,'/',['Sources/Repeating',13,'Sequence/Clock']])
set_param([sys,'/',['Sources/Repeating',13,'Sequence/Clock']],...
		'position',[45,60,65,80])

add_block('built-in/Fcn',[sys,'/',['Sources/Repeating',13,'Sequence/Fcn1']])
set_param([sys,'/',['Sources/Repeating',13,'Sequence/Fcn1']],...
		'Expr','rem(u[1],period)',...
		'position',[110,60,150,80])

add_block('built-in/Look Up Table',[sys,'/',['Sources/Repeating',13,'Sequence/Look-Up Table']])
set_param([sys,'/',['Sources/Repeating',13,'Sequence/Look-Up Table']],...
		'Input_Values','t',...
		'Output_Values','y',...
		'position',[210,58,250,82])

add_block('built-in/Outport',[sys,'/',['Sources/Repeating',13,'Sequence/out_1']])
set_param([sys,'/',['Sources/Repeating',13,'Sequence/out_1']],...
		'position',[285,60,305,80])
add_line([sys,'/',['Sources/Repeating',13,'Sequence']],[155,70;205,70])
add_line([sys,'/',['Sources/Repeating',13,'Sequence']],[70,70;105,70])
add_line([sys,'/',['Sources/Repeating',13,'Sequence']],[255,70;280,70])
set_param([sys,'/',['Sources/Repeating',13,'Sequence']],...
		'Mask Display','plot([t,t+period,t+2*period],[y,y,y])',...
		'Mask Type','Repeating table')
set_param([sys,'/',['Sources/Repeating',13,'Sequence']],...
		'Mask Dialogue','Repeating table.\nEnter values of time and output for first cycle.|Time values:|Output values:',...
		'Mask Translate','period = max(@1); t = @1; y = @2;')
set_param([sys,'/',['Sources/Repeating',13,'Sequence']],...
		'Mask Help','Repeats cycle given in table. Time values should be monotonically increasing.',...
		'Mask Entries','[0 2 2]\/[0 2 0]\/')


%     Finished composite block ['Sources/Repeating',13,'Sequence'].

set_param([sys,'/',['Sources/Repeating',13,'Sequence']],...
		'position',[195,37,230,73])


%     Subsystem  ['Sources/Band-Limited',13,'White Noise'].

new_system([sys,'/',['Sources/Band-Limited',13,'White Noise']])
set_param([sys,'/',['Sources/Band-Limited',13,'White Noise']],'Location',[54,341,339,470])

add_block('built-in/White Noise',[sys,'/',['Sources/Band-Limited',13,'White Noise/White Noise']])
set_param([sys,'/',['Sources/Band-Limited',13,'White Noise/White Noise']],...
		'Seed','seed',...
		'position',[25,40,45,60])

add_block('built-in/Zero-Order Hold',[sys,'/',['Sources/Band-Limited',13,'White Noise/Zero-Order',13,'Hold']])
set_param([sys,'/',['Sources/Band-Limited',13,'White Noise/Zero-Order',13,'Hold']],...
		'Sample time','Ts',...
		'position',[85,34,120,66])

add_block('built-in/Gain',[sys,'/',['Sources/Band-Limited',13,'White Noise/Gain']])
set_param([sys,'/',['Sources/Band-Limited',13,'White Noise/Gain']],...
		'Gain','[sqrt(Cov)]/[sqrt(Ts)]',...
		'position',[155,31,195,69])

add_block('built-in/Outport',[sys,'/',['Sources/Band-Limited',13,'White Noise/Out_1']])
set_param([sys,'/',['Sources/Band-Limited',13,'White Noise/Out_1']],...
		'position',[230,40,250,60])
add_line([sys,'/',['Sources/Band-Limited',13,'White Noise']],[125,50;150,50])
add_line([sys,'/',['Sources/Band-Limited',13,'White Noise']],[200,50;225,50])
add_line([sys,'/',['Sources/Band-Limited',13,'White Noise']],[50,50;80,50])
set_param([sys,'/',['Sources/Band-Limited',13,'White Noise']],...

⌨️ 快捷键说明

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