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

📄 tstrscod.m

📁 数字通信第四版原书的例程
💻 M
📖 第 1 页 / 共 2 页
字号:
		'Mask Help','Multiplies input vector by entered matrix to produce output vector (y=Au).')
set_param([sys,'/',['Matrix',13,'Gain']],...
		'Mask Entries','diag(randint(N_rs_demo,1,[1,M_rs_demo]))\/',...
		'position',[315,90,345,120])

add_block('built-in/Sum',[sys,'/','Sum'])
set_param([sys,'/','Sum'],...
		'hide name',0,...
		'position',[355,60,375,80])

add_block('built-in/Note',[sys,'/','This demo shows one burst error R-S code correction.'])
set_param([sys,'/','This demo shows one burst error R-S code correction.'],...
		'position',[175,170,180,175])

add_block('built-in/Note',[sys,'/',['This demo uses the MATLAB workspace variable to set the code world length N_rs_demo=7,',13,'message length K_rs_demo= 4, and bits per symbol M_rs_demo=3.                                  ']])
set_param([sys,'/',['This demo uses the MATLAB workspace variable to set the code world length N_rs_demo=7,',13,'message length K_rs_demo= 4, and bits per symbol M_rs_demo=3.                                  ']],...
		'position',[280,190,285,195])

add_block('built-in/Constant',[sys,'/','Const2'])
set_param([sys,'/','Const2'],...
		'orientation',3,...
		'hide name',0,...
		'position',[465,105,485,125])

add_block('built-in/Mux',[sys,'/','Mux1'])
set_param([sys,'/','Mux1'],...
		'hide name',0,...
		'inputs','2',...
		'position',[615,120,650,155])


%     Subsystem  ['Integer vector',13,'RS decode'].

new_system([sys,'/',['Integer vector',13,'RS decode']])
set_param([sys,'/',['Integer vector',13,'RS decode']],'Location',[267,61,656,221])

add_block('built-in/Outport',[sys,'/',['Integer vector',13,'RS decode/out_2']])
set_param([sys,'/',['Integer vector',13,'RS decode/out_2']],...
		'Port','2',...
		'position',[325,100,345,120])

add_block('built-in/Demux',[sys,'/',['Integer vector',13,'RS decode/Demux']])
set_param([sys,'/',['Integer vector',13,'RS decode/Demux']],...
		'outputs','[k, 1]',...
		'position',[260,50,300,85])

add_block('built-in/Mux',[sys,'/',['Integer vector',13,'RS decode/Mux']])
set_param([sys,'/',['Integer vector',13,'RS decode/Mux']],...
		'inputs','2',...
		'position',[80,40,115,75])

add_block('built-in/Inport',[sys,'/',['Integer vector',13,'RS decode/in_2']])
set_param([sys,'/',['Integer vector',13,'RS decode/in_2']],...
		'Port','2',...
		'position',[10,100,30,120])

add_block('built-in/Inport',[sys,'/',['Integer vector',13,'RS decode/in_1']])
set_param([sys,'/',['Integer vector',13,'RS decode/in_1']],...
		'position',[20,15,40,35])

add_block('built-in/S-Function',[sys,'/',['Integer vector',13,'RS decode/S-function']])
set_param([sys,'/',['Integer vector',13,'RS decode/S-function']],...
		'function name','simrsdec',...
		'parameters','n, k, tp, dim',...
		'position',[170,50,235,70])

add_block('built-in/Outport',[sys,'/',['Integer vector',13,'RS decode/out_1']])
set_param([sys,'/',['Integer vector',13,'RS decode/out_1']],...
		'position',[325,50,345,70])
add_line([sys,'/',['Integer vector',13,'RS decode']],[305,75;310,75;320,110])
add_line([sys,'/',['Integer vector',13,'RS decode']],[305,60;320,60])
add_line([sys,'/',['Integer vector',13,'RS decode']],[240,60;240,70;255,70])
add_line([sys,'/',['Integer vector',13,'RS decode']],[35,110;60,110;60,65;75,65])
add_line([sys,'/',['Integer vector',13,'RS decode']],[120,60;165,60])
add_line([sys,'/',['Integer vector',13,'RS decode']],[45,25;60,25;60,50;75,50])
set_param([sys,'/',['Integer vector',13,'RS decode']],...
		'Mask Display','plot(0,0,100,100,x,y,v,w);Int RS de',...
		'Mask Type','Integer vector I/O RS decode')
set_param([sys,'/',['Integer vector',13,'RS decode']],...
		'Mask Dialogue','Reed-Solomon decode with integer output\ncodeword vector length N and integer\ninput message vector length K.|Code word length N=2^M-1 (M is a >=3 integer):|Message length K (< N):')
set_param([sys,'/',['Integer vector',13,'RS decode']],...
		'Mask Translate','n=@1;k=@2;dim=3;p_d=7;while p_d<n,dim=dim+1;p_d=2^dim-1;end;tp=gftuple([-1:n-1]'',dim);[x,y]=codeicon(2);[v,w]=trigicon(0,25,get_param(gcb,''orientation''));')
set_param([sys,'/',['Integer vector',13,'RS decode']],...
		'Mask Help','This block decodes length N integer vector codeword input into length K integer vector message output. The input/output integers are in the range [0, N-1]. The block refreshes its decoding output when the enable signal at the second inport has positive value. The second outport outputs the number of errors detected in the process. If the codeword contains more errors than the correction capability, this output is negative.')
set_param([sys,'/',['Integer vector',13,'RS decode']],...
		'Mask Entries','N_rs_demo\/K_rs_demo\/')


%     Finished composite block ['Integer vector',13,'RS decode'].

set_param([sys,'/',['Integer vector',13,'RS decode']],...
		'ForeGround',6,...
		'hide name',0,...
		'position',[500,58,580,102])

add_block('built-in/S-Function',[sys,'/',['Integer vector',13,'to scalar1']])
set_param([sys,'/',['Integer vector',13,'to scalar1']],...
		'hide name',0,...
		'function name','simbi2de',...
		'parameters','p',...
		'Mask Display','Vec to sca\nconverter',...
		'Mask Type','Base M vector to decimal integer')
set_param([sys,'/',['Integer vector',13,'to scalar1']],...
		'Mask Dialogue','Convert base M integer with each\nposition in the input vector into scalar decimal output.|Input integer base M:',...
		'Mask Translate','p=@1;')
set_param([sys,'/',['Integer vector',13,'to scalar1']],...
		'Mask Help','This block convert the base M vector into scalar decimal integer output. Each element of the input vector is one position of the digit of the base M integer. The 1st element in the input vector contains the 1''s position. The 2nd element in the input vector contains the M''s position.')
set_param([sys,'/',['Integer vector',13,'to scalar1']],...
		'Mask Entries','2^M_rs_demo\/',...
		'position',[600,48,680,92])


%     Subsystem  'Error rate2'.

new_system([sys,'/','Error rate2'])
set_param([sys,'/','Error rate2'],'Location',[255,368,509,510])

add_block('built-in/S-Function',[sys,'/','Error rate2/S-function'])
set_param([sys,'/','Error rate2/S-function'],...
		'function name','sbiterr',...
		'parameters','num_lin, K, TDelay, Sample',...
		'position',[130,52,195,78])

add_block('built-in/Mux',[sys,'/','Error rate2/Mux'])
set_param([sys,'/','Error rate2/Mux'],...
		'inputs','2',...
		'position',[65,46,100,79])

add_block('built-in/Inport',[sys,'/','Error rate2/in_1'])
set_param([sys,'/','Error rate2/in_1'],...
		'position',[15,45,35,65])

add_block('built-in/Inport',[sys,'/','Error rate2/in_2'])
set_param([sys,'/','Error rate2/in_2'],...
		'Port','2',...
		'position',[15,60,35,80])
add_line([sys,'/','Error rate2'],[105,65;125,65])
add_line([sys,'/','Error rate2'],[40,55;60,55])
add_line([sys,'/','Error rate2'],[40,70;60,70])
set_param([sys,'/','Error rate2'],...
		'Mask Display','Error\nmeter',...
		'Mask Type','Symbol/bit error counter')
set_param([sys,'/','Error rate2'],...
		'Mask Dialogue','Use the input data from the 1st port as the reference signal to detect the number of errors and error rate of the 2nd port inputted signal.|Bit per symbol:|Number of digits on display:|Delay between input (1st port) and output (2nd port):|Sampling time (sec):')
set_param([sys,'/','Error rate2'],...
		'Mask Translate','K=@1;num_lin=@2;TDelay=@3;Sample=@4;')
set_param([sys,'/','Error rate2'],...
		'Mask Help','The signal from the first port must be a scalar. The second input port can be a vector with a same-time delay to the input signal. The comparison happens only at the sampling point.')
set_param([sys,'/','Error rate2'],...
		'Mask Entries','M_rs_demo*K_rs_demo\/10\/0\/1\/')


%     Finished composite block 'Error rate2'.

set_param([sys,'/','Error rate2'],...
		'hide name',0,...
		'position',[700,38,780,82])


%     Subsystem  ['Compare placed and',13,'detected number of errors'].

new_system([sys,'/',['Compare placed and',13,'detected number of errors']])
set_param([sys,'/',['Compare placed and',13,'detected number of errors']],'Location',[0,59,274,252])

add_block('built-in/S-Function',[sys,'/',['Compare placed and',13,'detected number of errors/S-function',13,'M-file which plots',13,'lines',13,'']])
set_param([sys,'/',['Compare placed and',13,'detected number of errors/S-function',13,'M-file which plots',13,'lines',13,'']],...
		'function name','sfuny',...
		'parameters','ax, color,dt',...
		'position',[130,55,180,75])

add_block('built-in/Inport',[sys,'/',['Compare placed and',13,'detected number of errors/x']])
set_param([sys,'/',['Compare placed and',13,'detected number of errors/x']],...
		'position',[65,55,85,75])
add_line([sys,'/',['Compare placed and',13,'detected number of errors']],[90,65;125,65])
set_param([sys,'/',['Compare placed and',13,'detected number of errors']],...
		'Mask Display','plot(0,0,100,100,[90,10,10,10,90,90,10],[65,65,90,40,40,90,90],[90,78,69,54,40,31,25,10],[77,60,48,46,56,75,81,84])',...
		'Mask Type','Graph scope.')
set_param([sys,'/',['Compare placed and',13,'detected number of errors']],...
		'Mask Dialogue','Graph scope using MATLAB graph window.\nEnter plotting ranges and line type.|Time range:|y-min:|y-max:|Line type (rgbw-:*). Seperate each plot by ''/'':')
set_param([sys,'/',['Compare placed and',13,'detected number of errors']],...
		'Mask Translate','color = @4; ax = [0, @1, @2, @3]; dt = -1;')
set_param([sys,'/',['Compare placed and',13,'detected number of errors']],...
		'Mask Help','This block plots to the MATLAB graph window and can be used as an improved version of the Scope block. Look at the m-file sfuny.m to see how it works. This block can take scalar or vector input signal.')
set_param([sys,'/',['Compare placed and',13,'detected number of errors']],...
		'Mask Entries','10\/-1.2\/.2+K_rs_demo\/''mx/c+/m-/w-/b+''\/')


%     Finished composite block ['Compare placed and',13,'detected number of errors'].

set_param([sys,'/',['Compare placed and',13,'detected number of errors']],...
		'hide name',0,...
		'position',[680,121,710,159])
add_line(sys,[320,65;350,65])
add_line(sys,[380,70;385,70])
add_line(sys,[475,70;495,70])
add_line(sys,[95,55;110,55])
add_line(sys,[200,55;230,55])
add_line(sys,[210,85;210,75;230,75])
add_line(sys,[585,70;595,70])
add_line(sys,[685,70;695,70])
add_line(sys,[95,55;95,25;685,25;695,50])
add_line(sys,[330,85;330,75;350,75])
add_line(sys,[655,140;675,140])
add_line(sys,[585,90;590,90;590,130;610,130])
add_line(sys,[455,145;610,145])
add_line(sys,[475,100;475,90;495,90])
add_line(sys,[290,145;425,145])
add_line(sys,[330,145;330,135;330,125])

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