📄 tsthammc.m
字号:
'Mask Dialogue','Add binary errors with specified error\nnumber probability.|Vector length(can''t be changed during simulation):|Probability of one err, two errs, three errs...:|Seed:')
set_param([sys,'/',['Max-err lmtd',13,'b-err channel']],...
'Mask Translate','leng=@1;prob=@2;seed=@3;[x,y]=chanicon;')
set_param([sys,'/',['Max-err lmtd',13,'b-err channel']],...
'Mask Help','This block adds binary errors to the input signal. The maximum number of errors added to the signal is the same as the length of the vector probability. The value of ith element of the probability is the probability of i number of errors in the vector. The 1st outport is the signal with added noise. The 2nd outport is the added noise.')
set_param([sys,'/',['Max-err lmtd',13,'b-err channel']],...
'Mask Entries','7\/1/2\/12345\/')
% Finished composite block ['Max-err lmtd',13,'b-err channel'].
set_param([sys,'/',['Max-err lmtd',13,'b-err channel']],...
'hide name',0,...
'position',[345,53,425,97])
% Subsystem ['Binary vector',13,'Hamming decode'].
new_system([sys,'/',['Binary vector',13,'Hamming decode']])
set_param([sys,'/',['Binary vector',13,'Hamming decode']],'Location',[267,160,850,320])
add_block('built-in/Inport',[sys,'/',['Binary vector',13,'Hamming decode/in_1']])
set_param([sys,'/',['Binary vector',13,'Hamming decode/in_1']],...
'position',[30,35,50,55])
add_block('built-in/State-Space',[sys,'/',['Binary vector',13,'Hamming decode/Matrix',13,'Gain']])
set_param([sys,'/',['Binary vector',13,'Hamming decode/Matrix',13,'Gain']],...
'A','[]',...
'B','[]',...
'C','[]',...
'D','K',...
'Mask Display','K',...
'Mask Type','Matrix Gain',...
'Mask Dialogue','Matrix Gain.|Gain matrix:')
set_param([sys,'/',['Binary vector',13,'Hamming decode/Matrix',13,'Gain']],...
'Mask Translate','K = @1;',...
'Mask Help','Multiplies input vector by entered matrix to produce output vector (y=Au).',...
'Mask Entries','H\/')
set_param([sys,'/',['Binary vector',13,'Hamming decode/Matrix',13,'Gain']],...
'position',[100,31,125,59])
add_block('built-in/S-Function',[sys,'/',['Binary vector',13,'Hamming decode/Modulus',13,'operation']])
set_param([sys,'/',['Binary vector',13,'Hamming decode/Modulus',13,'operation']],...
'function name','arymodu',...
'parameters','md',...
'Mask Display','Modulo',...
'Mask Type','Modulo')
set_param([sys,'/',['Binary vector',13,'Hamming decode/Modulus',13,'operation']],...
'Mask Dialogue','Modulus operation:|Modulus base:',...
'Mask Translate','md = @1;')
set_param([sys,'/',['Binary vector',13,'Hamming decode/Modulus',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,'/',['Binary vector',13,'Hamming decode/Modulus',13,'operation']],...
'Mask Entries','2\/',...
'position',[140,26,200,64])
add_block('built-in/Combinatorial Logic',[sys,'/',['Binary vector',13,'Hamming decode/Combinatorial',13,'Logic']])
set_param([sys,'/',['Binary vector',13,'Hamming decode/Combinatorial',13,'Logic']],...
'Truth Table','trt',...
'position',[225,33,255,57])
add_block('built-in/Sum',[sys,'/',['Binary vector',13,'Hamming decode/Sum']])
set_param([sys,'/',['Binary vector',13,'Hamming decode/Sum']],...
'position',[305,90,325,110])
add_block('built-in/S-Function',[sys,'/',['Binary vector',13,'Hamming decode/Modulus',13,'operation1']])
set_param([sys,'/',['Binary vector',13,'Hamming decode/Modulus',13,'operation1']],...
'function name','arymodu',...
'parameters','md',...
'Mask Display','Modulo',...
'Mask Type','Modulo')
set_param([sys,'/',['Binary vector',13,'Hamming decode/Modulus',13,'operation1']],...
'Mask Dialogue','Modulus operation:|Modulus base:',...
'Mask Translate','md = @1;')
set_param([sys,'/',['Binary vector',13,'Hamming decode/Modulus',13,'operation1']],...
'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,'/',['Binary vector',13,'Hamming decode/Modulus',13,'operation1']],...
'Mask Entries','2\/',...
'position',[340,81,400,119])
add_block('built-in/State-Space',[sys,'/',['Binary vector',13,'Hamming decode/Matrix',13,'Gain1']])
set_param([sys,'/',['Binary vector',13,'Hamming decode/Matrix',13,'Gain1']],...
'A','[]',...
'B','[]',...
'C','[]',...
'D','K',...
'Mask Display','K',...
'Mask Type','Matrix Gain',...
'Mask Dialogue','Matrix Gain.|Gain matrix:')
set_param([sys,'/',['Binary vector',13,'Hamming decode/Matrix',13,'Gain1']],...
'Mask Translate','K = @1;',...
'Mask Help','Multiplies input vector by entered matrix to produce output vector (y=Au).',...
'Mask Entries','G\/')
set_param([sys,'/',['Binary vector',13,'Hamming decode/Matrix',13,'Gain1']],...
'position',[415,86,440,114])
add_block('built-in/S-Function',[sys,'/',['Binary vector',13,'Hamming decode/Modulus',13,'operation2']])
set_param([sys,'/',['Binary vector',13,'Hamming decode/Modulus',13,'operation2']],...
'function name','arymodu',...
'parameters','md',...
'Mask Display','Modulo',...
'Mask Type','Modulo')
set_param([sys,'/',['Binary vector',13,'Hamming decode/Modulus',13,'operation2']],...
'Mask Dialogue','Modulus operation:|Modulus base:',...
'Mask Translate','md = @1;')
set_param([sys,'/',['Binary vector',13,'Hamming decode/Modulus',13,'operation2']],...
'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,'/',['Binary vector',13,'Hamming decode/Modulus',13,'operation2']],...
'Mask Entries','2\/',...
'position',[455,81,515,119])
add_block('built-in/Outport',[sys,'/',['Binary vector',13,'Hamming decode/out_1']])
set_param([sys,'/',['Binary vector',13,'Hamming decode/out_1']],...
'position',[535,90,555,110])
add_line([sys,'/',['Binary vector',13,'Hamming decode']],[130,45;135,45])
add_line([sys,'/',['Binary vector',13,'Hamming decode']],[205,45;220,45])
add_line([sys,'/',['Binary vector',13,'Hamming decode']],[260,45;285,45;285,95;300,95])
add_line([sys,'/',['Binary vector',13,'Hamming decode']],[55,45;95,45])
add_line([sys,'/',['Binary vector',13,'Hamming decode']],[80,45;80,105;300,105])
add_line([sys,'/',['Binary vector',13,'Hamming decode']],[330,100;335,100])
add_line([sys,'/',['Binary vector',13,'Hamming decode']],[405,100;410,100])
add_line([sys,'/',['Binary vector',13,'Hamming decode']],[445,100;450,100])
add_line([sys,'/',['Binary vector',13,'Hamming decode']],[520,100;530,100])
set_param([sys,'/',['Binary vector',13,'Hamming decode']],...
'Mask Display','plot(0,0,100,100,x,y);Hamming de',...
'Mask Type','Vector I/O Hamming decode')
set_param([sys,'/',['Binary vector',13,'Hamming decode']],...
'Mask Dialogue','Hamming decode with input codeword vector length N=2^M-1, output message vector length K=2^M-M-1, where M is a >=3 integer.|Codeword length N:|Message length K, or M-degree primitive polynomial:')
set_param([sys,'/',['Binary vector',13,'Hamming decode']],...
'Mask Translate','n=@1;k=@2;if length(k)>1,p=k;k=n-length(p)+1;else,p=gfprimdf(n-k);end;[H,G]=hammgen(n-k,p);trt=htruthtb(G);[n,m]=size(G);G=[zeros(n,m-n),eye(n)];[x,y]=codeicon(2);')
set_param([sys,'/',['Binary vector',13,'Hamming decode']],...
'Mask Help','This block decodes length N binary vector codeword input into length K binary vector message output using Hamming code. Use\nfunction GFPRIMDF or GFPRIMFD to find M-degree primitive polynomials.')
set_param([sys,'/',['Binary vector',13,'Hamming decode']],...
'Mask Entries','7\/gfprimfd(3,''min'')\/')
% Finished composite block ['Binary vector',13,'Hamming decode'].
set_param([sys,'/',['Binary vector',13,'Hamming decode']],...
'hide name',0,...
'position',[465,43,545,87])
% Subsystem 'Error rate1'.
new_system([sys,'/','Error rate1'])
set_param([sys,'/','Error rate1'],'Location',[255,368,509,510])
add_block('built-in/S-Function',[sys,'/','Error rate1/S-function'])
set_param([sys,'/','Error rate1/S-function'],...
'function name','sbiterr',...
'parameters','num_lin, K, TDelay, Sample',...
'position',[130,52,195,78])
add_block('built-in/Mux',[sys,'/','Error rate1/Mux'])
set_param([sys,'/','Error rate1/Mux'],...
'inputs','2',...
'position',[65,46,100,79])
add_block('built-in/Inport',[sys,'/','Error rate1/in_1'])
set_param([sys,'/','Error rate1/in_1'],...
'position',[15,45,35,65])
add_block('built-in/Inport',[sys,'/','Error rate1/in_2'])
set_param([sys,'/','Error rate1/in_2'],...
'Port','2',...
'position',[15,60,35,80])
add_line([sys,'/','Error rate1'],[105,65;125,65])
add_line([sys,'/','Error rate1'],[40,55;60,55])
add_line([sys,'/','Error rate1'],[40,70;60,70])
set_param([sys,'/','Error rate1'],...
'Mask Display','Error\nmeter',...
'Mask Type','Symbol/bit error counter')
set_param([sys,'/','Error rate1'],...
'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 rate1'],...
'Mask Translate','K=@1;num_lin=@2;TDelay=@3;Sample=@4;')
set_param([sys,'/','Error rate1'],...
'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 rate1'],...
'Mask Entries','4\/20\/0\/1\/')
% Finished composite block 'Error rate1'.
set_param([sys,'/','Error rate1'],...
'hide name',0,...
'position',[680,18,760,62])
add_block('built-in/S-Function',[sys,'/',['Integer vector',13,'to scalar']])
set_param([sys,'/',['Integer vector',13,'to scalar']],...
'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 scalar']],...
'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 scalar']],...
'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 scalar']],...
'Mask Entries','2\/',...
'position',[570,43,650,87])
add_block('built-in/Sum',[sys,'/','Sum'])
set_param([sys,'/','Sum'],...
'hide name',0,...
'inputs','+',...
'position',[460,100,480,120])
add_block('built-in/Scope',[sys,'/','Error-added'])
set_param([sys,'/','Error-added'],...
'hide name',0,...
'Vgain','1.500000',...
'Hgain','5.000000',...
'Vmax','3.000000',...
'Hmax','10.000000',...
'Window',[365,169,811,437])
open_system([sys,'/','Error-added'])
set_param([sys,'/','Error-added'],...
'position',[525,97,545,123])
add_line(sys,[100,75;125,75])
add_line(sys,[215,75;225,75])
add_line(sys,[550,65;565,65])
add_line(sys,[430,65;460,65])
add_line(sys,[315,75;340,75])
add_line(sys,[655,65;655,50;675,50])
add_line(sys,[110,75;110,30;675,30])
add_line(sys,[430,85;440,85;440,110;455,110])
add_line(sys,[485,110;520,110])
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 + -