📄 tstrsbin.m
字号:
set_param([sys,'/',['Binary-vector',13,'R-S encode/Mux']],...
'inputs','[k, 1]',...
'position',[90,51,125,84])
add_block('built-in/S-Function',[sys,'/',['Binary-vector',13,'R-S encode/S-function']])
set_param([sys,'/',['Binary-vector',13,'R-S encode/S-function']],...
'function name','simrscod',...
'parameters','n, k, pg,tp,dim',...
'position',[180,30,245,50])
add_block('built-in/Switch',[sys,'/',['Binary-vector',13,'R-S encode/Switch']])
set_param([sys,'/',['Binary-vector',13,'R-S encode/Switch']],...
'Threshold','0.5',...
'position',[305,54,335,86])
add_block('built-in/Memory',[sys,'/',['Binary-vector',13,'R-S encode/Memory']])
set_param([sys,'/',['Binary-vector',13,'R-S encode/Memory']],...
'orientation',2,...
'x0','zeros(1,n)',...
'position',[305,105,345,135])
add_line([sys,'/',['Binary-vector',13,'R-S encode']],[45,120;210,120;210,70;300,70])
add_line([sys,'/',['Binary-vector',13,'R-S encode']],[70,120;70,75;85,75])
add_line([sys,'/',['Binary-vector',13,'R-S encode']],[130,70;160,70;160,40;175,40])
add_line([sys,'/',['Binary-vector',13,'R-S encode']],[55,35;70,35;70,60;85,60])
add_line([sys,'/',['Binary-vector',13,'R-S encode']],[250,40;265,40;265,60;300,60])
add_line([sys,'/',['Binary-vector',13,'R-S encode']],[300,120;265,120;265,80;300,80])
add_line([sys,'/',['Binary-vector',13,'R-S encode']],[340,70;420,70])
add_line([sys,'/',['Binary-vector',13,'R-S encode']],[370,70;370,120;350,120])
set_param([sys,'/',['Binary-vector',13,'R-S encode']],...
'Mask Display','R-S\nencode',...
'Mask Type','Reed-Solomon encoding')
set_param([sys,'/',['Binary-vector',13,'R-S encode']],...
'Mask Dialogue','Code word N, message length K multi-burst-error-correction Reed-Solomon code.|Code length (N=2^M-1. M is a >2 integer):|Message length:')
set_param([sys,'/',['Binary-vector',13,'R-S encode']],...
'Mask Translate','n=@1;k=@2;if length(k)>1,pg=k;k=n-length(pg)-1;else,pg=rspoly(n,k);end;dim=3;p_dim=7;while p_dim<n,dim=dim+1;p_dim=2^dim-1;end;tp=gftuple([-1:n-1]'',dim);')
set_param([sys,'/',['Binary-vector',13,'R-S encode']],...
'Mask Help','This block encodes the K-ary Integer message signal from the 1st inport into N-ary Integer code word using Reed-Solomon code. The input/output integers are in the range [0, N]. Code word length N=2^M-1, where M is a integer no less than 3. The message length K<N. The error-correction capability T=floor((N-K)/2). The outport outputs the last encoded vector until the 2nd inport signal is non-zero.')
set_param([sys,'/',['Binary-vector',13,'R-S encode']],...
'Mask Entries','N_rs_demo\/K_rs_demo\/')
% Finished composite block ['Binary-vector',13,'R-S encode'].
set_param([sys,'/',['Binary-vector',13,'R-S encode']],...
'position',[245,45,305,85])
add_block('built-in/S-Function',[sys,'/',['Integer scalar',13,'to vector',13,'converter']])
set_param([sys,'/',['Integer scalar',13,'to vector',13,'converter']],...
'function name','simde2bi',...
'parameters','len,p',...
'Mask Display','Sca to vec\nconverter',...
'Mask Type','Scalar integer to vector converter')
set_param([sys,'/',['Integer scalar',13,'to vector',13,'converter']],...
'Mask Dialogue','Positive decimal interger to binary converter.|Output vector length:|Output element base:',...
'Mask Translate','len=@1;p=@2;')
set_param([sys,'/',['Integer scalar',13,'to vector',13,'converter']],...
'Mask Help','This block converts scaler positive decimal integer input to an arbitrary base integer vector output with specified vector length and output element base. The first element of the output vector is the lowest binary bit. For example, for a length two binary output, y(1)=0, y(2)=1 means the input is 1; y(0)=1, y(2)=0 means the input is 2.')
set_param([sys,'/',['Integer scalar',13,'to vector',13,'converter']],...
'Mask Entries','K_rs_demo*M_rs_demo\/2\/',...
'position',[120,36,180,74])
add_block('built-in/Sum',[sys,'/','Sum'])
set_param([sys,'/','Sum'],...
'position',[345,60,365,80])
add_block('built-in/S-Function',[sys,'/',['Modulo',13,'operation']])
set_param([sys,'/',['Modulo',13,'operation']],...
'function name','arymodu',...
'parameters','md',...
'Mask Display','Modulo',...
'Mask Type','Modulo',...
'Mask Dialogue','Modulo operation:|Modulo base:',...
'Mask Translate','md = @1;')
set_param([sys,'/',['Modulo',13,'operation']],...
'Mask Help','This block output modulus operation of the input signal with module base as specified in block entry. The length of the output vector is the same as the input vector.')
set_param([sys,'/',['Modulo',13,'operation']],...
'Mask Entries','2^M_rs_demo\/',...
'position',[385,51,445,89])
add_block('built-in/Constant',[sys,'/','Const2'])
set_param([sys,'/','Const2'],...
'position',[465,80,485,100])
% Subsystem ['Binary-vector',13,'R-S decode1'].
new_system([sys,'/',['Binary-vector',13,'R-S decode1']])
set_param([sys,'/',['Binary-vector',13,'R-S decode1']],'Location',[143,192,726,352])
add_block('built-in/Outport',[sys,'/',['Binary-vector',13,'R-S decode1/out_2']])
set_param([sys,'/',['Binary-vector',13,'R-S decode1/out_2']],...
'Port','2',...
'position',[495,95,515,115])
add_block('built-in/Outport',[sys,'/',['Binary-vector',13,'R-S decode1/out_1']])
set_param([sys,'/',['Binary-vector',13,'R-S decode1/out_1']],...
'position',[495,30,515,50])
add_block('built-in/Demux',[sys,'/',['Binary-vector',13,'R-S decode1/Demux']])
set_param([sys,'/',['Binary-vector',13,'R-S decode1/Demux']],...
'outputs','[k, 1]',...
'position',[395,40,435,75])
add_block('built-in/Inport',[sys,'/',['Binary-vector',13,'R-S decode1/in_2']])
set_param([sys,'/',['Binary-vector',13,'R-S decode1/in_2']],...
'Port','2',...
'position',[10,100,30,120])
add_block('built-in/Inport',[sys,'/',['Binary-vector',13,'R-S decode1/in_1']])
set_param([sys,'/',['Binary-vector',13,'R-S decode1/in_1']],...
'position',[20,15,40,35])
add_block('built-in/Mux',[sys,'/',['Binary-vector',13,'R-S decode1/Mux']])
set_param([sys,'/',['Binary-vector',13,'R-S decode1/Mux']],...
'inputs','[n, 1]',...
'position',[80,41,115,74])
add_block('built-in/S-Function',[sys,'/',['Binary-vector',13,'R-S decode1/S-function']])
set_param([sys,'/',['Binary-vector',13,'R-S decode1/S-function']],...
'function name','simrsdec',...
'parameters','n, k, tp, dim',...
'position',[170,20,235,40])
add_block('built-in/Switch',[sys,'/',['Binary-vector',13,'R-S decode1/Switch']])
set_param([sys,'/',['Binary-vector',13,'R-S decode1/Switch']],...
'Threshold','0.5',...
'position',[295,44,325,76])
add_block('built-in/Memory',[sys,'/',['Binary-vector',13,'R-S decode1/Memory']])
set_param([sys,'/',['Binary-vector',13,'R-S decode1/Memory']],...
'orientation',2,...
'x0','zeros(1,k+1)',...
'position',[295,95,335,125])
add_line([sys,'/',['Binary-vector',13,'R-S decode1']],[440,65;455,65;455,105;490,105])
add_line([sys,'/',['Binary-vector',13,'R-S decode1']],[440,50;455,50;455,40;490,40])
add_line([sys,'/',['Binary-vector',13,'R-S decode1']],[35,110;200,110;200,60;290,60])
add_line([sys,'/',['Binary-vector',13,'R-S decode1']],[60,110;60,65;75,65])
add_line([sys,'/',['Binary-vector',13,'R-S decode1']],[120,60;150,60;150,30;165,30])
add_line([sys,'/',['Binary-vector',13,'R-S decode1']],[45,25;60,25;60,50;75,50])
add_line([sys,'/',['Binary-vector',13,'R-S decode1']],[240,30;255,30;255,50;290,50])
add_line([sys,'/',['Binary-vector',13,'R-S decode1']],[290,110;255,110;255,70;290,70])
add_line([sys,'/',['Binary-vector',13,'R-S decode1']],[330,60;390,60])
add_line([sys,'/',['Binary-vector',13,'R-S decode1']],[360,60;360,110;340,110])
set_param([sys,'/',['Binary-vector',13,'R-S decode1']],...
'Mask Display','R-S\ndecode',...
'Mask Type','Reed-Solomon decode')
set_param([sys,'/',['Binary-vector',13,'R-S decode1']],...
'Mask Dialogue','Code word length N, message length K, burst error-correction Reed-Solomon decode.|Code word length (N=2^M-1. M is a >2 integer):|Message length K < N:')
set_param([sys,'/',['Binary-vector',13,'R-S decode1']],...
'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);')
set_param([sys,'/',['Binary-vector',13,'R-S decode1']],...
'Mask Help','This block decodes N-ary integer code word from 1st inport into K-ary integer message sigusing at 1st ouport using Reed-Solomon method. M is an integer no less than 3. The input/output integers are in the range [0,N]. A non-zero second inport signal triggers the block to do decode process. The block outputs the last processed results when second inport signal is zero. The second outport outputs the error detected in the process. A negative output indicates more error than the capability.')
set_param([sys,'/',['Binary-vector',13,'R-S decode1']],...
'Mask Entries','N_rs_demo\/K_rs_demo\/')
% Finished composite block ['Binary-vector',13,'R-S decode1'].
set_param([sys,'/',['Binary-vector',13,'R-S decode1']],...
'position',[505,60,565,100])
add_block('built-in/S-Function',[sys,'/',['Integer vector ',13,'to scalar',13,'converter']])
set_param([sys,'/',['Integer vector ',13,'to scalar',13,'converter']],...
'function name','simbi2de',...
'parameters','p',...
'Mask Display','Vec to sca\nconverter',...
'Mask Type','Vectro to scalar converter')
set_param([sys,'/',['Integer vector ',13,'to scalar',13,'converter']],...
'Mask Dialogue','Positive integer vector to scalar decimal integer converter:|Input element base:',...
'Mask Translate','p=@1;')
set_param([sys,'/',['Integer vector ',13,'to scalar',13,'converter']],...
'Mask Help','This block converts a binary vector to a scalar decimal integer. The block takes the first element input as the lowest binary bit. For example, if u(1)=1 and u(2)=0, the block outputs y=1; if u(1)=0 and u(2)=1, the block outputs y=2.')
set_param([sys,'/',['Integer vector ',13,'to scalar',13,'converter']],...
'Mask Entries','2\/',...
'position',[610,50,670,90])
add_block('built-in/Mux',[sys,'/','Mux'])
set_param([sys,'/','Mux'],...
'inputs','[K_rs_demo, K_rs_demo]',...
'position',[695,45,730,80])
% Subsystem ['Graph',13,'sig v.s. dec'].
new_system([sys,'/',['Graph',13,'sig v.s. dec']])
set_param([sys,'/',['Graph',13,'sig v.s. dec']],'Location',[0,59,274,252])
add_block('built-in/S-Function',[sys,'/',['Graph',13,'sig v.s. dec/S-function',13,'M-file which plots',13,'lines',13,'']])
set_param([sys,'/',['Graph',13,'sig v.s. dec/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,'/',['Graph',13,'sig v.s. dec/x']])
set_param([sys,'/',['Graph',13,'sig v.s. dec/x']],...
'position',[65,55,85,75])
add_line([sys,'/',['Graph',13,'sig v.s. dec']],[90,65;125,65])
set_param([sys,'/',['Graph',13,'sig v.s. dec']],...
'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,'/',['Graph',13,'sig v.s. dec']],...
'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,'/',['Graph',13,'sig v.s. dec']],...
'Mask Translate','color = @4; ax = [0, @1, @2, @3]; dt = -1;')
set_param([sys,'/',['Graph',13,'sig v.s. dec']],...
'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,'/',['Graph',13,'sig v.s. dec']],...
'Mask Entries','10\/-.2\/.2+2^(M_rs_demo*K_rs_demo)\/''yo/g*/r*/c*/m*''\/')
% Finished composite block ['Graph',13,'sig v.s. dec'].
set_param([sys,'/',['Graph',13,'sig v.s. dec']],...
'position',[750,46,780,84])
add_line(sys,[310,65;340,65])
add_line(sys,[370,70;380,70])
add_line(sys,[450,70;500,70])
add_line(sys,[90,55;115,55])
add_line(sys,[735,65;745,65])
add_line(sys,[185,55;240,55])
add_line(sys,[305,170;380,170])
add_line(sys,[215,170;240,170])
add_line(sys,[325,170;325,75;340,75])
add_line(sys,[705,165;750,165])
add_line(sys,[570,90;590,90;590,155;660,155])
add_line(sys,[410,170;660,170])
add_line(sys,[220,75;240,75])
add_line(sys,[490,90;500,90])
add_line(sys,[100,55;100,20;680,20;690,55])
add_line(sys,[675,70;690,70])
add_line(sys,[570,70;605,70])
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 + -