📄 rs_encoder_154a.m
字号:
%% function tx_bit = rs_encoder_154a(data,DATALENGTH,interleaver_seed)%function tx_bit = rs_encoder_154a(data,DATALENGTH,interleaver_seed)% RS encoding parameters% We are in GF(2^6)m = 6;% Codeword length and message lengthk = 55;n = k+8;% Note: rsgenpoly(n,k) and rsgenpoly(n,k,67) are the samenblock = ceil(DATALENGTH/330);fprintf('[RS encoder] Number of blocks = %d\n',nblock);tx_bit = [];for l = 1:nblock fprintf('[RS encoder] block = %d, (%d,%d)\n',... l,1+(l-1)*330,min(l*330,DATALENGTH)); data_block = data(1+(l-1)*330:min(l*330,DATALENGTH)); BLOCKLENGTH = length(data_block); fprintf('[RS encoder] BLOCKLENGTH = %d\n',BLOCKLENGTH); % Note: according to 15.4a, the maximum number of bit is 330. Hence, if % DATA_LENGTH < 330, pad zeros at the beginning if BLOCKLENGTH < 330 fprintf('[RS encoder] zero padding\n'); data_block = [zeros(1,330-BLOCKLENGTH) data_block]; end % Conversion from bit to symbol in GF(2^6) data_block = permute(reshape(data_block,m,k),[2 1]); symbols = bi2de(data_block,'left-msb'); % RS encoding enc_symbols = rsenc(gf(symbols',m),n,k); % Keep only what is necessary if BLOCKLENGTH < 330 enc_symbols = enc_symbols(floor((330-BLOCKLENGTH)/m)+1:end); end % Convert back to bit tx_bit_block = de2bi(double(enc_symbols.x),m,'left-msb'); tx_bit_block = reshape(permute(tx_bit_block,[2 1]),1,size(tx_bit_block,1)*m); tx_bit = [tx_bit tx_bit_block];endif ~isempty(interleaver_seed) fprintf('[RS encoder] interleaving\n'); tx_bit = randintrlv(tx_bit,interleaver_seed);endreturn;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -