You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
srsRAN_4G/matlab/tests/rm_turbo_rx_test.m

44 lines
1.2 KiB
Matlab

clear
enbConfig=struct('NCellID',1,'CyclicPrefix','Normal','CellRefP',1);
pdschConfig=struct('Modulation','QPSK','RV',0,'TxScheme','Port0');
addpath('../../build/srslte/lib/fec/test')
codewordLen = 12000;
trBlkLenVec = 6201;
error=zeros(size(trBlkLenVec));
for i=1:length(trBlkLenVec)
trBlkLen=trBlkLenVec(i);
in=randi(2,trBlkLen,1)-1;
RV = 0;
trblockwithcrc = lteCRCEncode(in,'24A');
codeblocks = lteCodeBlockSegment(trblockwithcrc);
turbocodedblocks = lteTurboEncode(codeblocks);
codeword = lteRateMatchTurbo(turbocodedblocks,codewordLen,RV);
info = lteDLSCHInfo(trBlkLen);
mat = lteRateRecoverTurbo(codeword,trBlkLen,RV);
mat2 = reshape(reshape(mat{1},[],3)',[],1);
out = lteTurboDecode(mat{1});
lib=srslte_rm_turbo_rx(double(codeword),trBlkLen,RV);
[outLib] = srslte_turbodecoder(lib);
if (length(trBlkLenVec) == 1)
% fprintf('Err mat: %d. Err lib: %d\n',sum(out(1+info.F:trBlkLen+info.F)~=in),sum(outLib(1+info.F:trBlkLen+info.F)~=in));
end
error(i)=mean(abs(double(mat2)-double(lib)));
end
if (length(trBlkLenVec) == 1)
n=1:length(mat{1});
plot(abs(double(mat2)-double(lib)))
%plot(n,mat{1},n,lib)
else
plot(error)
end