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

📄 rs_encoder_154a.m

📁 source Matlab traites the UWB
💻 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 + -