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

📄 fmrtw.m

📁 数字通信第四版原书的例程
💻 M
📖 第 1 页 / 共 2 页
字号:
function [ret,x0,str,ts,xts]=fmrtw(t,x,u,flag);
%FMRTW	is the M-file description of the SIMULINK system named FMRTW.
%	The block-diagram can be displayed by typing: FMRTW.
%
%	SYS=FMRTW(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 FMRTW 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 FMRTW with a FLAG of zero:
%	[SIZES]=FMRTW([],[],[],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',[363,42,1004,193])
     open_system(sys)
end;
set_param(sys,'algorithm',     'Euler')
set_param(sys,'Start time',    '0.0')
set_param(sys,'Stop time',     '300')
set_param(sys,'Min step size', '0.0001')
set_param(sys,'Max step size', '10')
set_param(sys,'Relative error','1e-3')
set_param(sys,'Return vars',   '[t,x,y]')
set_param(sys,'AssignSampleTimeColors','on');
set_param(sys,'AssignWideVectorLines','on');
set_param(sys,'Nonreal-time algorithm','None')
set_param(sys,'Nonreal-time min step size','0.001')
set_param(sys,'Nonreal-time stop time','20')
set_param(sys,'Nonreal-time save workspace blocks','off')
set_param(sys,'Real-time algorithm','None')
set_param(sys,'Real-time step size','0.0005')
set_param(sys,'Real-time template makefile','rti31.cmm')
set_param(sys,'Real-time build command','make_rt OPTS=-Dinf=1.e30')


%     Subsystem  'DS1102DA'.

new_system([sys,'/','DS1102DA'])
set_param([sys,'/','DS1102DA'],'Location',[12,124,275,390])


%     Subsystem  'DS1102DA/DAC_#1'.

new_system([sys,'/','DS1102DA/DAC_#1'])
set_param([sys,'/','DS1102DA/DAC_#1'],'Location',[125,40,274,186])

add_block('built-in/Gain',[sys,'/','DS1102DA/DAC_#1/DS_BOARD'])
set_param([sys,'/','DS1102DA/DAC_#1/DS_BOARD'],...
		'Gain','range_key',...
		'position',[60,60,80,80])

add_block('built-in/Inport',[sys,'/','DS1102DA/DAC_#1/in_1'])
set_param([sys,'/','DS1102DA/DAC_#1/in_1'],...
		'position',[10,60,30,80])

add_block('built-in/Outport',[sys,'/','DS1102DA/DAC_#1/out_1'])
set_param([sys,'/','DS1102DA/DAC_#1/out_1'],...
		'position',[110,60,130,80])
add_line([sys,'/','DS1102DA/DAC_#1'],[35,70;55,70])
add_line([sys,'/','DS1102DA/DAC_#1'],[85,70;105,70])
set_param([sys,'/','DS1102DA/DAC_#1'],...
		'Mask Display','DA',...
		'Mask Type','DA Converter',...
		'Mask Dialogue','DA Converter|range_key',...
		'Mask Translate','range_key=@1;',...
		'Mask Entries','10\/')


%     Finished composite block 'DS1102DA/DAC_#1'.

set_param([sys,'/','DS1102DA/DAC_#1'],...
		'position',[105,40,145,60])

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

add_block('built-in/Outport',[sys,'/','DS1102DA/out_1'])
set_param([sys,'/','DS1102DA/out_1'],...
		'position',[175,40,195,60])
add_line([sys,'/','DS1102DA'],[80,50;100,50])
add_line([sys,'/','DS1102DA'],[150,50;170,50])
set_param([sys,'/','DS1102DA'],...
		'Mask Display','DAC\nUnit',...
		'Mask Type','DS1102DA v2.0',...
		'Mask Dialogue','Voltage range for all DAC channels:\n\n[-10 +10] Volts',...
		'Mask Translate',' ')


%     Finished composite block 'DS1102DA'.

set_param([sys,'/','DS1102DA'],...
		'ForeGround',4,...
		'position',[520,24,550,66])


%     Subsystem  'OutPlug'.

new_system([sys,'/','OutPlug'])
set_param([sys,'/','OutPlug'],'Location',[0,0,152,163])

add_block('built-in/Gain',[sys,'/','OutPlug/DS_SOP'])
set_param([sys,'/','OutPlug/DS_SOP'],...
		'position',[100,50,120,70])

add_block('built-in/Inport',[sys,'/','OutPlug/input'])
set_param([sys,'/','OutPlug/input'],...
		'position',[30,50,50,70])
add_line([sys,'/','OutPlug'],[55,60;95,60])
set_param([sys,'/','OutPlug'],...
		'Mask Display','    S    ',...
		'Mask Type','Single output plug v2.0',...
		'Mask Dialogue','Single output plug')


%     Finished composite block 'OutPlug'.

set_param([sys,'/','OutPlug'],...
		'ForeGround',4,...
		'position',[590,39,615,51])


%     Subsystem  ['FDM',13,'passband'].

new_system([sys,'/',['FDM',13,'passband']])
set_param([sys,'/',['FDM',13,'passband']],'Location',[30,490,489,666])

add_block('built-in/Gain',[sys,'/',['FDM',13,'passband/Sensitivity']])
set_param([sys,'/',['FDM',13,'passband/Sensitivity']],...
		'Gain','2',...
		'position',[75,25,115,55])

add_block('built-in/Product',[sys,'/',['FDM',13,'passband/Multiplier',13,'phase detector']])
set_param([sys,'/',['FDM',13,'passband/Multiplier',13,'phase detector']],...
		'position',[190,35,215,55])

add_block('built-in/Filter',[sys,'/',['FDM',13,'passband/Filter']])
set_param([sys,'/',['FDM',13,'passband/Filter']],...
		'Numerator','num',...
		'Denominator','den',...
		'Sample time','ts',...
		'position',[275,26,330,64])


%     Subsystem  ['FDM',13,'passband/Discrete-time',13,'VCO'].

new_system([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO']])
set_param([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO']],'Location',[93,129,873,276])

add_block('built-in/Outport',[sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/out_1']])
set_param([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/out_1']],...
		'position',[690,35,710,55])

add_block('built-in/Gain',[sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/Sensitivity3']])
set_param([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/Sensitivity3']],...
		'Gain','Ac',...
		'position',[605,30,655,60])

add_block('built-in/Fcn',[sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/sin']])
set_param([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/sin']],...
		'Expr','cos(u[1])',...
		'position',[510,32,585,58])

add_block('built-in/Constant',[sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/Phase']])
set_param([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/Phase']],...
		'Value','Ph',...
		'position',[400,100,420,120])

add_block('built-in/Sum',[sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/Sum']])
set_param([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/Sum']],...
		'inputs','+++',...
		'position',[465,27,485,63])

add_block('built-in/Gain',[sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/Sensitivity2']])
set_param([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/Sensitivity2']],...
		'Gain','Fc',...
		'position',[255,75,300,105])

add_block('built-in/Clock',[sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/Clock']])
set_param([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/Clock']],...
		'position',[180,80,200,100])

add_block('built-in/Gain',[sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/Sensitivity']])
set_param([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/Sensitivity']],...
		'Gain','Kc',...
		'position',[105,15,155,45])

add_block('built-in/Sum',[sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/Sum1']])
set_param([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/Sum1']],...
		'position',[230,25,250,45])

add_block('built-in/Unit Delay',[sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/Unit Delay']])
set_param([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/Unit Delay']],...
		'Sample time','ts',...
		'position',[300,25,350,45])

add_block('built-in/Inport',[sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/in_1']])
set_param([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO/in_1']],...
		'position',[35,20,55,40])
add_line([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO']],[660,45;685,45])
add_line([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO']],[590,45;600,45])
add_line([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO']],[425,110;435,110;435,55;460,55])
add_line([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO']],[355,35;460,35])
add_line([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO']],[370,35;370,70;205,70;205,40;225,40])
add_line([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO']],[305,90;425,90;425,45;460,45])
add_line([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO']],[205,90;250,90])
add_line([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO']],[490,45;505,45])
add_line([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO']],[255,35;295,35])
add_line([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO']],[160,30;225,30])
add_line([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO']],[60,30;100,30])
set_param([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO']],...
		'Mask Display','Discrete\nVCO',...
		'Mask Type','VCO')
set_param([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO']],...
		'Mask Dialogue','Voltage-Controlled Oscilator:|Amplitude constant:|Carier frequency (Hz):|Sensitivity constant:|Initial phase (rad):|Sample time:')
set_param([sys,'/',['FDM',13,'passband/Discrete-time',13,'VCO']],...
		'Mask Translate','Ac=@1;Fc=@2;Kc=@3;Ph=@4;pi2=2*pi;ts=@5;Kc=Kc*pi2*ts(1);Fc=Fc*pi2;')

⌨️ 快捷键说明

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