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

📄 test_convencoder.m

📁 OFDMA 物理层开发的matlab 源码.飞思卡尔提供.对物理层开发的工程师有帮助!
💻 M
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  Property of Freescale
%  Freescale Confidential Proprietary
%  Freescale Copyright (C) 2005 All rights reserved
%  ----------------------------------------------------------------------------
%  $RCSfile: test_ConvEncoder.m.rca $
%  $Revision: 1.8 $
%  $Date: Mon Oct 23 06:31:04 2006 $
%  Target: Matlab
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function status = test_ConvEncoder

addpath('../../../../CM/Utilities/matlab');


status = -1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

ModuleName = 'ConvEncoder';

disp(['Testing ' ModuleName ' ... ']);

%-- Test vectors, 1st col input, 2nd col reference, 3rd col - punct type,
%<FN>_<ZN>_<BN>_<CBN>
TV = { ...
    'TC000/IF1dTX_00_00_00_00.lod' 'TC000/IF1eTX_00_00_00_00.lod'  ;
    'TC001/IF1dTX_00_00_00_00.lod' 'TC001/IF1eTX_00_00_00_00.lod'  ;
    'TC001/IF1dTX_00_00_01_00.lod' 'TC001/IF1eTX_00_00_01_00.lod'  ;
    'TC001/IF1dTX_00_00_02_00.lod' 'TC001/IF1eTX_00_00_02_00.lod'  ;
    'TC001/IF1dTX_00_00_03_00.lod' 'TC001/IF1eTX_00_00_03_00.lod'  ;
    'TC001/IF1dTX_00_00_03_01.lod' 'TC001/IF1eTX_00_00_03_01.lod'  ;
    'TC001/IF1dTX_00_00_03_02.lod' 'TC001/IF1eTX_00_00_03_02.lod'  ;
    'TC001/IF1dTX_00_00_03_03.lod' 'TC001/IF1eTX_00_00_03_03.lod'  ;
    'TC001/IF1dTX_00_00_03_04.lod' 'TC001/IF1eTX_00_00_03_04.lod'  ;
    'TC002/IF1dTX_00_00_00_00.lod' 'TC002/IF1eTX_00_00_00_00.lod'  ;
    'TC002/IF1dTX_00_00_01_00.lod' 'TC002/IF1eTX_00_00_01_00.lod'  ;
    'TC002/IF1dTX_00_00_02_00.lod' 'TC002/IF1eTX_00_00_02_00.lod'  ;
    'TC002/IF1dTX_00_00_03_00.lod' 'TC002/IF1eTX_00_00_03_00.lod'  ;
    'TC002/IF1dTX_00_00_03_01.lod' 'TC002/IF1eTX_00_00_03_01.lod'  ;
    'TC002/IF1dTX_00_00_03_02.lod' 'TC002/IF1eTX_00_00_03_02.lod'  ;
    'TC002/IF1dTX_00_00_03_03.lod' 'TC002/IF1eTX_00_00_03_03.lod'  ;
    'TC002/IF1dTX_00_00_03_04.lod' 'TC002/IF1eTX_00_00_03_04.lod'  ;
    'TC002/IF1dTX_00_00_03_05.lod' 'TC002/IF1eTX_00_00_03_05.lod'  ;
    'TC003/IF1dTX_00_00_00_00.lod' 'TC003/IF1eTX_00_00_00_00.lod'  ;
    'TC003/IF1dTX_00_00_01_00.lod' 'TC003/IF1eTX_00_00_01_00.lod'  ;
    'TC003/IF1dTX_00_00_02_00.lod' 'TC003/IF1eTX_00_00_02_00.lod'  ;
    'TC003/IF1dTX_00_00_03_00.lod' 'TC003/IF1eTX_00_00_03_00.lod'  ;
    'TC003/IF1dTX_00_00_03_01.lod' 'TC003/IF1eTX_00_00_03_01.lod'  ;
    'TC003/IF1dTX_00_00_03_02.lod' 'TC003/IF1eTX_00_00_03_02.lod'  ;
    'TC004/IF1dTX_00_00_00_00.lod' 'TC004/IF1eTX_00_00_00_00.lod'  ;
    'TC004/IF1dTX_00_00_01_00.lod' 'TC004/IF1eTX_00_00_01_00.lod'  ;
    'TC004/IF1dTX_00_00_02_00.lod' 'TC004/IF1eTX_00_00_02_00.lod'  ;
    'TC004/IF1dTX_00_00_03_00.lod' 'TC004/IF1eTX_00_00_03_00.lod'  ;
    'TC004/IF1dTX_00_00_03_01.lod' 'TC004/IF1eTX_00_00_03_01.lod'  ;
    'TC004/IF1dTX_00_00_03_02.lod' 'TC004/IF1eTX_00_00_03_02.lod'  ;
    'TC004/IF1dTX_00_00_03_03.lod' 'TC004/IF1eTX_00_00_03_03.lod'  ;
    'TC004/IF1dTX_00_00_03_04.lod' 'TC004/IF1eTX_00_00_03_04.lod'  ;
    'TC005/IF1dTX_00_00_00_00.lod' 'TC005/IF1eTX_00_00_00_00.lod'  ;
    'TC005/IF1dTX_00_00_01_00.lod' 'TC005/IF1eTX_00_00_01_00.lod'  ;
    'TC005/IF1dTX_00_00_02_00.lod' 'TC005/IF1eTX_00_00_02_00.lod'  ;
    'TC005/IF1dTX_00_00_03_00.lod' 'TC005/IF1eTX_00_00_03_00.lod'  ;
    'TC005/IF1dTX_00_00_03_01.lod' 'TC005/IF1eTX_00_00_03_01.lod'  ;
    'TC005/IF1dTX_00_00_03_02.lod' 'TC005/IF1eTX_00_00_03_02.lod'  ;
    'TC005/IF1dTX_00_00_03_03.lod' 'TC005/IF1eTX_00_00_03_03.lod'  ;
    'TC005/IF1dTX_00_00_03_04.lod' 'TC005/IF1eTX_00_00_03_04.lod'  ;
    'TC005/IF1dTX_00_00_03_05.lod' 'TC005/IF1eTX_00_00_03_05.lod'  ;
    'TC006/IF1dTX_00_00_00_00.lod' 'TC006/IF1eTX_00_00_00_00.lod'  ;
    'TC006/IF1dTX_00_00_01_00.lod' 'TC006/IF1eTX_00_00_01_00.lod'  ;
    'TC006/IF1dTX_00_00_02_00.lod' 'TC006/IF1eTX_00_00_02_00.lod'  ;
    'TC006/IF1dTX_00_00_03_00.lod' 'TC006/IF1eTX_00_00_03_00.lod'  ;
    'TC006/IF1dTX_00_00_03_01.lod' 'TC006/IF1eTX_00_00_03_01.lod'  ;
    'TC006/IF1dTX_00_00_03_02.lod' 'TC006/IF1eTX_00_00_03_02.lod'  ;
    'TC006/IF1dTX_00_00_03_03.lod' 'TC006/IF1eTX_00_00_03_03.lod'  ;
    'TC006/IF1dTX_00_00_03_04.lod' 'TC006/IF1eTX_00_00_03_04.lod'  ;
    'TC006/IF1dTX_00_00_03_05.lod' 'TC006/IF1eTX_00_00_03_05.lod'  ;
    'TC007/IF1dTX_00_00_00_00.lod' 'TC007/IF1eTX_00_00_00_00.lod'  ;
    'TC007/IF1dTX_00_00_01_00.lod' 'TC007/IF1eTX_00_00_01_00.lod'  ;
    'TC007/IF1dTX_00_00_02_00.lod' 'TC007/IF1eTX_00_00_02_00.lod'  ;
    'TC007/IF1dTX_00_00_03_00.lod' 'TC007/IF1eTX_00_00_03_00.lod'  ;
    'TC007/IF1dTX_00_00_03_01.lod' 'TC007/IF1eTX_00_00_03_01.lod'  ;
    'TC007/IF1dTX_00_00_03_02.lod' 'TC007/IF1eTX_00_00_03_02.lod'  ;
    'TC007/IF1dTX_00_00_03_03.lod' 'TC007/IF1eTX_00_00_03_03.lod'  ;
    'TC007/IF1dTX_00_00_03_04.lod' 'TC007/IF1eTX_00_00_03_04.lod'  ;
    'TC007/IF1dTX_00_00_03_05.lod' 'TC007/IF1eTX_00_00_03_05.lod'  ;
    'TC007/IF1dTX_00_00_03_06.lod' 'TC007/IF1eTX_00_00_03_06.lod'  ;
    'TC007/IF1dTX_00_00_03_07.lod' 'TC007/IF1eTX_00_00_03_07.lod'  ;
    'TC007/IF1dTX_00_00_03_08.lod' 'TC007/IF1eTX_00_00_03_08.lod'  ;
    'TC007/IF1dTX_00_00_03_09.lod' 'TC007/IF1eTX_00_00_03_09.lod'  ;
    'TC007/IF1dTX_00_00_03_10.lod' 'TC007/IF1eTX_00_00_03_10.lod'  ;
    'TC007/IF1dTX_00_00_03_11.lod' 'TC007/IF1eTX_00_00_03_11.lod'  ;
    'TC008/IF1dTX_00_00_00_00.lod' 'TC008/IF1eTX_00_00_00_00.lod'  ;
    'TC008/IF1dTX_00_00_01_00.lod' 'TC008/IF1eTX_00_00_01_00.lod'  ;
    'TC008/IF1dTX_00_00_02_00.lod' 'TC008/IF1eTX_00_00_02_00.lod'  ;
    'TC008/IF1dTX_00_00_03_00.lod' 'TC008/IF1eTX_00_00_03_00.lod'  ;
    'TC008/IF1dTX_00_00_03_01.lod' 'TC008/IF1eTX_00_00_03_01.lod'  ;
    'TC009/IF1dTX_00_00_00_00.lod' 'TC009/IF1eTX_00_00_00_00.lod'  ;
    'TC009/IF1dTX_00_00_01_00.lod' 'TC009/IF1eTX_00_00_01_00.lod'  ;
    'TC009/IF1dTX_00_00_02_00.lod' 'TC009/IF1eTX_00_00_02_00.lod'  ;
    'TC009/IF1dTX_00_00_03_00.lod' 'TC009/IF1eTX_00_00_03_00.lod'  ;
    'TC009/IF1dTX_00_00_03_01.lod' 'TC009/IF1eTX_00_00_03_01.lod'  ;
    'TC010/IF1dTX_00_00_00_00.lod' 'TC010/IF1eTX_00_00_00_00.lod'  ;
    'TC010/IF1dTX_00_00_01_00.lod' 'TC010/IF1eTX_00_00_01_00.lod'  ;
    'TC010/IF1dTX_00_00_02_00.lod' 'TC010/IF1eTX_00_00_02_00.lod'  ;
    'TC010/IF1dTX_00_00_03_00.lod' 'TC010/IF1eTX_00_00_03_00.lod'  ;
    'TC010/IF1dTX_00_00_03_01.lod' 'TC010/IF1eTX_00_00_03_01.lod'  ;
    'TC13/IF1dTX_00_00_03_00.lod'  'TC13/IF1eTX_00_00_03_00.lod'   ;
    'TC13/IF1dTX_00_00_03_01.lod'  'TC13/IF1eTX_00_00_03_01.lod'   ;
    'TC13/IF1dTX_00_00_03_02.lod'  'TC13/IF1eTX_00_00_03_02.lod'   ;
    'TC99/IF1dTX_00.lod'           'TC99/IF1eTX_00.lod'            ;
    };


%-- Loop over the TV
result = 1.*ones(1,size(TV,1));
for i=1:size(TV,1)

    %-- Load stimuli
    In = mGetBin(['../vector/in/' TV{i,1} ],'uint8','R');
    Ref = mGetBin(['../vector/ref/' TV{i,2}],'uint8','R');
    In_bits  = mByteUnpack(In);
    Ref_bits = mByteUnpack(Ref);
    %-- Call Matlab function
    mOut_bits = mConvEncoder(In_bits,length(In_bits),0); %B CC

    %-- Compare
    if (length(mOut_bits) == length(Ref_bits))
        result(i) = any(mOut_bits-Ref_bits);
    else
        result(i) = 1;
        length(mOut_bits)
        length(Ref_bits)
    end
    if any(result(i))
        disp(['Error: Matlab function failed for ' TV{i,1} ]);
    else
        disp(['OK: Matlab function succeeded for ' TV{i,1} ]);
    end
end

if any(result)
    disp(['Error: Matlab function ' ModuleName ' failed.' ]);
    status = -1 ;
else
    disp(['OK: Matlab function ' ModuleName ' succeeded.'  ]);
    status = 1;
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%test case from the spec IEEE Std 802.16-2004 Cor1/D4
% 8.4.9.4.4 Example of OFDMA

disp('Testing Convolutional Encoder for OFDMA stndard test case...');

%input
In1_bits = mGetBin('../vector/in/In1_bits.lod','uint8','R');

%reference
Ref1_bits= mGetBin('../vector/ref/Ref1_bits.lod','uint8','R');

%call Matlab function
mOut_bits = mConvEncoder(In1_bits,length(In1_bits),0); %CC

if any(mOut_bits-Ref1_bits)
    disp('Error: Matlab function failed.');
else
    disp('OK: Matlab function succeeded.');
end

%random Example for OFDMA

disp('Testing Convolutional Encoder for OFDMA random test...');

%input
In2_bits= mGetBin('../vector/in/In2_bits.lod','uint8','R');
%reference
Ref2_bits=mGetBin('../vector/ref/Ref2_bits.lod','uint8','R');

%call Matlab function
mOut_bits = mConvEncoder(In2_bits,length(In2_bits),0); %CC

if any(mOut_bits-Ref2_bits)
    disp('Error: Matlab function failed.');
else
    disp('OK: Matlab function succeeded.');
end


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -