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

📄 tstap2cd.m

📁 数字通信第四版原书的例程
💻 M
📖 第 1 页 / 共 2 页
字号:
function [ret,x0,str,ts,xts]=tstap2cd(t,x,u,flag);
%TSTAP2CD	is the M-file description of the SIMULINK system named TSTAP2CD.
%	The block-diagram can be displayed by typing: TSTAP2CD.
%
%	SYS=TSTAP2CD(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 TSTAP2CD 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 TSTAP2CD with a FLAG of zero:
%	[SIZES]=TSTAP2CD([],[],[],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',[64,60,751,248])
     open_system(sys)
end;
set_param(sys,'algorithm',     'RK-45')
set_param(sys,'Start time',    '0.0')
set_param(sys,'Stop time',     '999')
set_param(sys,'Min step size', 'ts')
set_param(sys,'Max step size', 'ts')
set_param(sys,'Relative error','1e-3')
set_param(sys,'Return vars',   '')
set_param(sys,'Load callback','ts=.01;td=.2;M=8;Fc=100/2/pi;');


%     Subsystem  'MPSK modu'.

new_system([sys,'/','MPSK modu'])
set_param([sys,'/','MPSK modu'],'Location',[52,104,441,278])

add_block('built-in/Inport',[sys,'/','MPSK modu/in_1'])
set_param([sys,'/','MPSK modu/in_1'],...
		'position',[60,35,80,55])

add_block('built-in/Zero-Order Hold',[sys,'/',['MPSK modu/Zero-Order',13,'Hold1']])
set_param([sys,'/',['MPSK modu/Zero-Order',13,'Hold1']],...
		'Sample time','td',...
		'position',[130,29,165,61])

add_block('built-in/Product',[sys,'/','MPSK modu/Product'])
set_param([sys,'/','MPSK modu/Product'],...
		'position',[235,76,260,109])

add_block('built-in/Outport',[sys,'/','MPSK modu/out_1'])
set_param([sys,'/','MPSK modu/out_1'],...
		'position',[310,85,330,105])

add_block('built-in/Constant',[sys,'/','MPSK modu/Multiple factor'])
set_param([sys,'/','MPSK modu/Multiple factor'],...
		'Value','Sft',...
		'position',[130,108,150,132])
add_line([sys,'/','MPSK modu'],[170,45;200,45;200,85;230,85])
add_line([sys,'/','MPSK modu'],[85,45;125,45])
add_line([sys,'/','MPSK modu'],[265,95;305,95])
add_line([sys,'/','MPSK modu'],[155,120;200,120;200,100;230,100])
set_param([sys,'/','MPSK modu'],...
		'Mask Display','MPSK\ncode',...
		'Mask Type','MPSK code')
set_param([sys,'/','MPSK modu'],...
		'Mask Dialogue','Code for M-ary phase shift keying modulation.|M-ary number (input integer in range [0, M-1]):|Symbol interval (second):',...
		'Mask Translate','pi2=2*pi;Sft=pi2/@1; td=@2;')
set_param([sys,'/','MPSK modu'],...
		'Mask Help','This block code the digital signal into phase shifting signal for M-ary phase shift keying modulation. The constellation of the PSK con be seen using the MATLAB command apkconst(M).')
set_param([sys,'/','MPSK modu'],...
		'Mask Entries','M\/td\/')


%     Finished composite block 'MPSK modu'.

set_param([sys,'/','MPSK modu'],...
		'position',[125,92,195,128])


%     Subsystem  ['Phase',13,'Modulation'].

new_system([sys,'/',['Phase',13,'Modulation']])
set_param([sys,'/',['Phase',13,'Modulation']],'Location',[269,388,780,574])

add_block('built-in/Clock',[sys,'/',['Phase',13,'Modulation/Clock']])
set_param([sys,'/',['Phase',13,'Modulation/Clock']],...
		'position',[45,70,65,90])

add_block('built-in/Sum',[sys,'/',['Phase',13,'Modulation/Sum2']])
set_param([sys,'/',['Phase',13,'Modulation/Sum2']],...
		'inputs','+-',...
		'position',[225,60,250,95])

add_block('built-in/Outport',[sys,'/',['Phase',13,'Modulation/out_1']])
set_param([sys,'/',['Phase',13,'Modulation/out_1']],...
		'position',[450,70,470,90])

add_block('built-in/Inport',[sys,'/',['Phase',13,'Modulation/in_1']])
set_param([sys,'/',['Phase',13,'Modulation/in_1']],...
		'position',[155,15,175,35])

add_block('built-in/Fcn',[sys,'/',['Phase',13,'Modulation/Fcn']])
set_param([sys,'/',['Phase',13,'Modulation/Fcn']],...
		'Expr','cos(u[1])',...
		'position',[330,65,405,95])

add_block('built-in/Sum',[sys,'/',['Phase',13,'Modulation/Sum1']])
set_param([sys,'/',['Phase',13,'Modulation/Sum1']],...
		'inputs','+++',...
		'position',[285,62,305,98])

add_block('built-in/Gain',[sys,'/',['Phase',13,'Modulation/Gain']])
set_param([sys,'/',['Phase',13,'Modulation/Gain']],...
		'Gain','Fc',...
		'position',[85,65,125,95])

add_block('built-in/Zero-Order Hold',[sys,'/',['Phase',13,'Modulation/Zero-Order',13,'Hold']])
set_param([sys,'/',['Phase',13,'Modulation/Zero-Order',13,'Hold']],...
		'Sample time','td',...
		'position',[155,99,190,131])

add_block('built-in/Constant',[sys,'/',['Phase',13,'Modulation/Initial value']])
set_param([sys,'/',['Phase',13,'Modulation/Initial value']],...
		'Value','Ph',...
		'position',[225,125,245,145])

add_block('built-in/Zero-Order Hold',[sys,'/',['Phase',13,'Modulation/Zero-Order Hold',13,'timing control']])
set_param([sys,'/',['Phase',13,'Modulation/Zero-Order Hold',13,'timing control']],...
		'Sample time','ts',...
		'position',[150,229,185,261])
add_line([sys,'/',['Phase',13,'Modulation']],[410,80;445,80])
add_line([sys,'/',['Phase',13,'Modulation']],[250,135;260,135;260,90;280,90])
add_line([sys,'/',['Phase',13,'Modulation']],[310,80;325,80])
add_line([sys,'/',['Phase',13,'Modulation']],[180,25;260,25;260,70;280,70])
add_line([sys,'/',['Phase',13,'Modulation']],[70,80;80,80])
add_line([sys,'/',['Phase',13,'Modulation']],[255,80;280,80])
add_line([sys,'/',['Phase',13,'Modulation']],[130,80;170,80;170,70;220,70])
add_line([sys,'/',['Phase',13,'Modulation']],[195,115;200,115;200,85;220,85])
add_line([sys,'/',['Phase',13,'Modulation']],[130,80;135,80;135,115;150,115])
set_param([sys,'/',['Phase',13,'Modulation']],...
		'Mask Display','PM',...
		'Mask Type','PM')
set_param([sys,'/',['Phase',13,'Modulation']],...
		'Mask Dialogue','Phase modulation:|Carier frequency (Hz):|Initial phase (rad):|Sample time (second):|Symbol interval (Inf for analog modulation): ')
set_param([sys,'/',['Phase',13,'Modulation']],...
		'Mask Translate','Fc=@1*2*pi;Ph=@2;ts=@3;td=@4;',...
		'Mask Help','The PM block cause the phase of the sinusoidal carrier to depend on the input signal voltage.')
set_param([sys,'/',['Phase',13,'Modulation']],...
		'Mask Entries','Fc\/0\/ts\/td\/')


%     Finished composite block ['Phase',13,'Modulation'].

set_param([sys,'/',['Phase',13,'Modulation']],...
		'ForeGround',3,...
		'position',[220,93,295,127])


%     Subsystem  ['K-step',13,'delay'].

new_system([sys,'/',['K-step',13,'delay']])
set_param([sys,'/',['K-step',13,'delay']],'Location',[4,432,349,702])

add_block('built-in/Inport',[sys,'/',['K-step',13,'delay/in_1']])
set_param([sys,'/',['K-step',13,'delay/in_1']],...
		'position',[20,80,40,100])

add_block('built-in/Outport',[sys,'/',['K-step',13,'delay/out_1']])
set_param([sys,'/',['K-step',13,'delay/out_1']],...
		'position',[325,120,345,140])

add_block('built-in/Filter',[sys,'/',['K-step',13,'delay/K-step',13,'delay']])
set_param([sys,'/',['K-step',13,'delay/K-step',13,'delay']],...
		'Numerator','[zeros(1,n), 1]',...
		'Denominator','1',...
		'Sample time','ts',...
		'position',[60,70,185,110])

add_block('built-in/Switch',[sys,'/',['K-step',13,'delay/Switch']])
set_param([sys,'/',['K-step',13,'delay/Switch']],...
		'Threshold','.1',...
		'position',[270,114,295,146])

add_block('built-in/Constant',[sys,'/',['K-step',13,'delay/Constant']])
set_param([sys,'/',['K-step',13,'delay/Constant']],...
		'Value','ini',...
		'position',[120,230,140,250])

add_block('built-in/Clock',[sys,'/',['K-step',13,'delay/Clock']])
set_param([sys,'/',['K-step',13,'delay/Clock']],...
		'position',[75,145,95,165])

add_block('built-in/Constant',[sys,'/',['K-step',13,'delay/Constant1']])
set_param([sys,'/',['K-step',13,'delay/Constant1']],...
		'Value','n*ts(1)+ts(2)',...
		'position',[15,194,100,216])

add_block('built-in/Relational Operator',[sys,'/',['K-step',13,'delay/Relational',13,'Operator']])
set_param([sys,'/',['K-step',13,'delay/Relational',13,'Operator']],...
		'position',[150,168,180,192])
add_line([sys,'/',['K-step',13,'delay']],[300,130;320,130])
add_line([sys,'/',['K-step',13,'delay']],[45,90;55,90])
add_line([sys,'/',['K-step',13,'delay']],[190,90;195,90;195,120;265,120])
add_line([sys,'/',['K-step',13,'delay']],[145,240;240,240;240,140;265,140])
add_line([sys,'/',['K-step',13,'delay']],[100,155;115,155;115,175;145,175])
add_line([sys,'/',['K-step',13,'delay']],[105,205;115,205;115,185;145,185])
add_line([sys,'/',['K-step',13,'delay']],[185,180;220,180;220,130;265,130])
set_param([sys,'/',['K-step',13,'delay']],...
		'Mask Display','    -k\nz   ',...
		'Mask Type','Multi-step delay',...
		'Mask Dialogue','Output is K steps delay of the input signal.|Delay steps (integer):|Sample time (sec):|Inital condition:')
set_param([sys,'/',['K-step',13,'delay']],...
		'Mask Translate','n=@1;ts=@2;if length(ts)<2, ts=[ts 0];end;ini=@3;',...
		'Mask Help','This block equivalent to K unit delay.',...
		'Mask Entries','1\/td\/NaN\/')


%     Finished composite block ['K-step',13,'delay'].

set_param([sys,'/',['K-step',13,'delay']],...
		'BackGround',5,...
		'position',[285,30,345,60])


%     Subsystem  ['MPSK demod',13,'correlation'].

new_system([sys,'/',['MPSK demod',13,'correlation']])
set_param([sys,'/',['MPSK demod',13,'correlation']],'Location',[269,223,837,414])

add_block('built-in/Constant',[sys,'/',['MPSK demod',13,'correlation/Shift key']])
set_param([sys,'/',['MPSK demod',13,'correlation/Shift key']],...
		'Value','sft',...
		'position',[115,13,135,37])

add_block('built-in/Outport',[sys,'/',['MPSK demod',13,'correlation/out_1']])
set_param([sys,'/',['MPSK demod',13,'correlation/out_1']],...
		'position',[525,60,545,80])

add_block('built-in/S-Function',[sys,'/',['MPSK demod',13,'correlation/Scheduled',13,'reset-int1']])
set_param([sys,'/',['MPSK demod',13,'correlation/Scheduled',13,'reset-int1']],...
		'function name','schdint',...
		'parameters','td, ts, limit',...
		'Mask Display','Schdld\nreset-int',...
		'Mask Type','Scheduled reset integration.')
set_param([sys,'/',['MPSK demod',13,'correlation/Scheduled',13,'reset-int1']],...
		'Mask Dialogue','Reset the state to be zero(s) at the scheduled reset point.|Scheduled reset time inteval and offset:|Sample time and offset:|Modulo bound:')
set_param([sys,'/',['MPSK demod',13,'correlation/Scheduled',13,'reset-int1']],...
		'Mask Translate','td=@1;ts=@2;limit=@3;')

⌨️ 快捷键说明

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