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

📄 tstpk2cd.m

📁 数字通信第四版原书的例程
💻 M
📖 第 1 页 / 共 2 页
字号:
set_param([sys,'/',['PM',13,'passband/Zero-Order',13,'Hold']],...
		'Sample time','td',...
		'position',[150,94,185,126])

add_block('built-in/Gain',[sys,'/',['PM',13,'passband/Gain']])
set_param([sys,'/',['PM',13,'passband/Gain']],...
		'Gain','Fc',...
		'position',[80,60,120,90])

add_block('built-in/Sum',[sys,'/',['PM',13,'passband/Sum1']])
set_param([sys,'/',['PM',13,'passband/Sum1']],...
		'inputs','+++',...
		'position',[280,57,300,93])

add_block('built-in/Fcn',[sys,'/',['PM',13,'passband/Fcn']])
set_param([sys,'/',['PM',13,'passband/Fcn']],...
		'Expr','cos(u[1])',...
		'position',[325,60,400,90])

add_block('built-in/Inport',[sys,'/',['PM',13,'passband/in_1']])
set_param([sys,'/',['PM',13,'passband/in_1']],...
		'position',[150,10,170,30])

add_block('built-in/Outport',[sys,'/',['PM',13,'passband/out_1']])
set_param([sys,'/',['PM',13,'passband/out_1']],...
		'position',[445,65,465,85])

add_block('built-in/Sum',[sys,'/',['PM',13,'passband/Sum2']])
set_param([sys,'/',['PM',13,'passband/Sum2']],...
		'inputs','+-',...
		'position',[220,55,245,90])

add_block('built-in/Clock',[sys,'/',['PM',13,'passband/Clock']])
set_param([sys,'/',['PM',13,'passband/Clock']],...
		'position',[40,65,60,85])
add_line([sys,'/',['PM',13,'passband']],[125,75;130,75;130,110;145,110])
add_line([sys,'/',['PM',13,'passband']],[190,110;195,110;195,80;215,80])
add_line([sys,'/',['PM',13,'passband']],[125,75;165,75;165,65;215,65])
add_line([sys,'/',['PM',13,'passband']],[250,75;275,75])
add_line([sys,'/',['PM',13,'passband']],[65,75;75,75])
add_line([sys,'/',['PM',13,'passband']],[175,20;255,20;255,65;275,65])
add_line([sys,'/',['PM',13,'passband']],[305,75;320,75])
add_line([sys,'/',['PM',13,'passband']],[245,130;255,130;255,85;275,85])
add_line([sys,'/',['PM',13,'passband']],[405,75;440,75])
set_param([sys,'/',['PM',13,'passband']],...
		'Mask Display','plot(0,0,100,100,x,y);PM',...
		'Mask Type','Passband PM')
set_param([sys,'/',['PM',13,'passband']],...
		'Mask Dialogue','Modulate the input signal using PM method.|Carrier frequency (Hz):|Initial phase (rad):|Symbol interval (sec, Use inf for analog case):')
set_param([sys,'/',['PM',13,'passband']],...
		'Mask Translate','Fc=@1*2*pi;Ph=@2;td=@3;if isinf(td),td=inf;end;[x,y]=moduicon(3);',...
		'Mask Help','The PM block causes the change of the carrier signal depending on the input signal voltage.')
set_param([sys,'/',['PM',13,'passband']],...
		'Mask Entries','100/2/pi\/0\/td\/')


%     Finished composite block ['PM',13,'passband'].

set_param([sys,'/',['PM',13,'passband']],...
		'hide name',0,...
		'position',[240,53,320,97])


%     Subsystem  ['MPSK demod',13,'corr passband'].

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

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

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

add_block('built-in/S-Function',[sys,'/',['MPSK demod',13,'corr passband/Scheduled',13,'reset-int1']])
set_param([sys,'/',['MPSK demod',13,'corr passband/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,'corr passband/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,'corr passband/Scheduled',13,'reset-int1']],...
		'Mask Translate','td=@1;ts=@2;limit=@3;')
set_param([sys,'/',['MPSK demod',13,'corr passband/Scheduled',13,'reset-int1']],...
		'Mask Help','This block resets the state(s) to be zero(s) at the begining of reset time inteval. The reset inteval can be a two elements vector with the second element being offset.')
set_param([sys,'/',['MPSK demod',13,'corr passband/Scheduled',13,'reset-int1']],...
		'Mask Entries','td\/ts\/Inf\/',...
		'position',[440,49,500,91])

add_block('built-in/Product',[sys,'/',['MPSK demod',13,'corr passband/Product']])
set_param([sys,'/',['MPSK demod',13,'corr passband/Product']],...
		'position',[385,51,410,84])

add_block('built-in/Inport',[sys,'/',['MPSK demod',13,'corr passband/in_1']])
set_param([sys,'/',['MPSK demod',13,'corr passband/in_1']],...
		'position',[305,100,325,120])

add_block('built-in/S-Function',[sys,'/',['MPSK demod',13,'corr passband/Array sin']])
set_param([sys,'/',['MPSK demod',13,'corr passband/Array sin']],...
		'function name','arysin',...
		'parameters','''cos''',...
		'position',[295,50,345,70])

add_block('built-in/Constant',[sys,'/',['MPSK demod',13,'corr passband/Initial phase']])
set_param([sys,'/',['MPSK demod',13,'corr passband/Initial phase']],...
		'Value','Ph',...
		'position',[165,48,185,72])

add_block('built-in/Sum',[sys,'/',['MPSK demod',13,'corr passband/Sum1']])
set_param([sys,'/',['MPSK demod',13,'corr passband/Sum1']],...
		'inputs','+++',...
		'position',[240,40,265,80])

add_block('built-in/Sum',[sys,'/',['MPSK demod',13,'corr passband/Sum2']])
set_param([sys,'/',['MPSK demod',13,'corr passband/Sum2']],...
		'inputs','+-',...
		'position',[185,90,210,125])

add_block('built-in/Clock',[sys,'/',['MPSK demod',13,'corr passband/Clock']])
set_param([sys,'/',['MPSK demod',13,'corr passband/Clock']],...
		'position',[15,90,35,110])

add_block('built-in/Zero-Order Hold',[sys,'/',['MPSK demod',13,'corr passband/Zero-Order',13,'Hold']])
set_param([sys,'/',['MPSK demod',13,'corr passband/Zero-Order',13,'Hold']],...
		'Sample time','td',...
		'position',[125,119,160,151])

add_block('built-in/Gain',[sys,'/',['MPSK demod',13,'corr passband/Gain']])
set_param([sys,'/',['MPSK demod',13,'corr passband/Gain']],...
		'Gain','Fc',...
		'position',[65,85,105,115])
add_line([sys,'/',['MPSK demod',13,'corr passband']],[505,70;520,70])
add_line([sys,'/',['MPSK demod',13,'corr passband']],[415,70;435,70])
add_line([sys,'/',['MPSK demod',13,'corr passband']],[270,60;290,60])
add_line([sys,'/',['MPSK demod',13,'corr passband']],[140,25;225,25;235,45])
add_line([sys,'/',['MPSK demod',13,'corr passband']],[190,60;235,60])
add_line([sys,'/',['MPSK demod',13,'corr passband']],[40,100;60,100])
add_line([sys,'/',['MPSK demod',13,'corr passband']],[215,110;225,110;235,75])
add_line([sys,'/',['MPSK demod',13,'corr passband']],[110,100;180,100])
add_line([sys,'/',['MPSK demod',13,'corr passband']],[110,100;120,135])
add_line([sys,'/',['MPSK demod',13,'corr passband']],[165,135;165,115;180,115])
add_line([sys,'/',['MPSK demod',13,'corr passband']],[350,60;380,60])
add_line([sys,'/',['MPSK demod',13,'corr passband']],[330,110;360,110;360,75;380,75])
set_param([sys,'/',['MPSK demod',13,'corr passband']],...
		'Mask Display','MPSK\ndm corr',...
		'Mask Type','Passband coherent MPSK correlation')
set_param([sys,'/',['MPSK demod',13,'corr passband']],...
		'Mask Dialogue','Compute MPSK correlation. Take MPSK\nmodulated signal. Output a vector of\ncorrelation result.|M-ary number (integer in range [0, M-1]):|Symbol interval and offset (sec):|Carrier frequency (Hz):|Initial phase (rad):|Sample time (sec):')
set_param([sys,'/',['MPSK demod',13,'corr passband']],...
		'Mask Translate','pi2=2*pi;N=@1;sft=[0:N-1]*pi2/N;td=@2;Fc=@3*pi2;Ph=@4;ts=@5;')
set_param([sys,'/',['MPSK demod',13,'corr passband']],...
		'Mask Help','This block calculates the correlation value of the input signal with a vector of sinusoidal signals. These sinusoidal signals have their phase shift the same as that of PM modulated signal of possible resulting digits. The output is an M length vector. M is the M-ary number. The MPSK demodulation result is the index of the largest output, using the Min/max demap block. The computation is phase sensitive.')
set_param([sys,'/',['MPSK demod',13,'corr passband']],...
		'Mask Entries','M\/td\/Fc\/0\/ts\/')


%     Finished composite block ['MPSK demod',13,'corr passband'].

set_param([sys,'/',['MPSK demod',13,'corr passband']],...
		'hide name',0,...
		'position',[360,53,440,97])


%     Subsystem  'Min//max index2'.

new_system([sys,'/','Min//max index2'])
set_param([sys,'/','Min//max index2'],'Location',[192,461,623,564])

add_block('built-in/Inport',[sys,'/','Min//max index2/in_1'])
set_param([sys,'/','Min//max index2/in_1'],...
		'position',[65,20,85,40])

add_block('built-in/Zero-Order Hold',[sys,'/',['Min//max index2/Zero-Order',13,'Hold']])
set_param([sys,'/',['Min//max index2/Zero-Order',13,'Hold']],...
		'Sample time','td',...
		'position',[165,14,200,46])

add_block('built-in/Outport',[sys,'/','Min//max index2/out_1'])
set_param([sys,'/','Min//max index2/out_1'],...
		'position',[335,20,355,40])

add_block('built-in/S-Function',[sys,'/','Min//max index2/Maximum'])
set_param([sys,'/','Min//max index2/Maximum'],...
		'function name','arymimai',...
		'parameters','mima',...
		'position',[240,20,320,40])
add_line([sys,'/','Min//max index2'],[90,30;160,30])
add_line([sys,'/','Min//max index2'],[325,30;330,30])
add_line([sys,'/','Min//max index2'],[205,30;235,30])
set_param([sys,'/','Min//max index2'],...
		'Mask Display','Min/Max\ndemap',...
		'Mask Type','Maximum/minimum index.')
set_param([sys,'/','Min//max index2'],...
		'Mask Dialogue','Choose the index of the input vector with\nmax/min value at sampling point. Hold the\nvalue for the rest of the period.|Symbol interval (sec):|''max'' or ''min'':')
set_param([sys,'/','Min//max index2'],...
		'Mask Translate','td=@1;mima=@2;')
set_param([sys,'/','Min//max index2'],...
		'Mask Help','This block outputs the index of the vector element that has the maximum or minimum value in the input vector. The computation starts at the sampling time point. The block holds the value for the rest of the interval.')
set_param([sys,'/','Min//max index2'],...
		'Mask Entries','td\/''max''\/')


%     Finished composite block 'Min//max index2'.

set_param([sys,'/','Min//max index2'],...
		'hide name',0,...
		'position',[470,53,550,97])
add_line(sys,[90,75;115,75])
add_line(sys,[100,75;100,35;565,35;565,55;585,55])
add_line(sys,[555,75;585,75])
add_line(sys,[205,75;235,75])
add_line(sys,[325,75;355,75])
add_line(sys,[445,75;465,75])

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 + -