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

📄 test_puncturing.m

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

function status = test_Puncturing

addpath('../../../../CM/Utilities/matlab');
 status = -1;

ModuleName = 'Puncturing';

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

%-- Test vectors, 1st col input, 2nd col reference, 3rd col - punct type,
%<FN>_<ZN>_<BN>_<CBN>
TV = { ...
    'TC000/IF1eTX_00_00_00_00.lod' 'TC000/IF1fTX_00_00_00_00.lod' '2' ;
    'TC001/IF1eTX_00_00_00_00.lod' 'TC001/IF1fTX_00_00_00_00.lod' '0' ;
    'TC001/IF1eTX_00_00_01_00.lod' 'TC001/IF1fTX_00_00_01_00.lod' '0' ;
    'TC001/IF1eTX_00_00_02_00.lod' 'TC001/IF1fTX_00_00_02_00.lod' '0' ;
    'TC001/IF1eTX_00_00_03_00.lod' 'TC001/IF1fTX_00_00_03_00.lod' '0' ;
    'TC001/IF1eTX_00_00_03_01.lod' 'TC001/IF1fTX_00_00_03_01.lod' '0' ;
    'TC001/IF1eTX_00_00_03_02.lod' 'TC001/IF1fTX_00_00_03_02.lod' '0' ;
    'TC001/IF1eTX_00_00_03_03.lod' 'TC001/IF1fTX_00_00_03_03.lod' '0' ;
    'TC001/IF1eTX_00_00_03_04.lod' 'TC001/IF1fTX_00_00_03_04.lod' '0' ; 
    'TC002/IF1eTX_00_00_00_00.lod' 'TC002/IF1fTX_00_00_00_00.lod' '0' ;
    'TC002/IF1eTX_00_00_01_00.lod' 'TC002/IF1fTX_00_00_01_00.lod' '0' ;
    'TC002/IF1eTX_00_00_02_00.lod' 'TC002/IF1fTX_00_00_02_00.lod' '0' ;
    'TC002/IF1eTX_00_00_03_00.lod' 'TC002/IF1fTX_00_00_03_00.lod' '2' ;
    'TC002/IF1eTX_00_00_03_01.lod' 'TC002/IF1fTX_00_00_03_01.lod' '2' ;
    'TC002/IF1eTX_00_00_03_02.lod' 'TC002/IF1fTX_00_00_03_02.lod' '2' ;
    'TC002/IF1eTX_00_00_03_03.lod' 'TC002/IF1fTX_00_00_03_03.lod' '2' ;
    'TC002/IF1eTX_00_00_03_04.lod' 'TC002/IF1fTX_00_00_03_04.lod' '2' ; 
    'TC002/IF1eTX_00_00_03_05.lod' 'TC002/IF1fTX_00_00_03_05.lod' '2' ; 
    'TC003/IF1eTX_00_00_00_00.lod' 'TC003/IF1fTX_00_00_00_00.lod' '0' ;
    'TC003/IF1eTX_00_00_01_00.lod' 'TC003/IF1fTX_00_00_01_00.lod' '0' ;
    'TC003/IF1eTX_00_00_02_00.lod' 'TC003/IF1fTX_00_00_02_00.lod' '0' ;
    'TC003/IF1eTX_00_00_03_00.lod' 'TC003/IF1fTX_00_00_03_00.lod' '2' ;
    'TC003/IF1eTX_00_00_03_01.lod' 'TC003/IF1fTX_00_00_03_01.lod' '0' ;
    'TC003/IF1eTX_00_00_03_02.lod' 'TC003/IF1fTX_00_00_03_02.lod' '0' ;
    'TC004/IF1eTX_00_00_00_00.lod' 'TC004/IF1fTX_00_00_00_00.lod' '0' ;
    'TC004/IF1eTX_00_00_01_00.lod' 'TC004/IF1fTX_00_00_01_00.lod' '0' ;
    'TC004/IF1eTX_00_00_02_00.lod' 'TC004/IF1fTX_00_00_02_00.lod' '0' ;
    'TC004/IF1eTX_00_00_03_00.lod' 'TC004/IF1fTX_00_00_03_00.lod' '2' ;
    'TC004/IF1eTX_00_00_03_01.lod' 'TC004/IF1fTX_00_00_03_01.lod' '2' ;
    'TC004/IF1eTX_00_00_03_02.lod' 'TC004/IF1fTX_00_00_03_02.lod' '2' ;
    'TC004/IF1eTX_00_00_03_03.lod' 'TC004/IF1fTX_00_00_03_03.lod' '2' ;
    'TC004/IF1eTX_00_00_03_04.lod' 'TC004/IF1fTX_00_00_03_04.lod' '2' ; 
    'TC005/IF1eTX_00_00_00_00.lod' 'TC005/IF1fTX_00_00_00_00.lod' '0' ;
    'TC005/IF1eTX_00_00_01_00.lod' 'TC005/IF1fTX_00_00_01_00.lod' '0' ;
    'TC005/IF1eTX_00_00_02_00.lod' 'TC005/IF1fTX_00_00_02_00.lod' '0' ;
    'TC005/IF1eTX_00_00_03_00.lod' 'TC005/IF1fTX_00_00_03_00.lod' '0' ;
    'TC005/IF1eTX_00_00_03_01.lod' 'TC005/IF1fTX_00_00_03_01.lod' '0' ;
    'TC005/IF1eTX_00_00_03_02.lod' 'TC005/IF1fTX_00_00_03_02.lod' '0' ;
    'TC005/IF1eTX_00_00_03_03.lod' 'TC005/IF1fTX_00_00_03_03.lod' '0' ;
    'TC005/IF1eTX_00_00_03_04.lod' 'TC005/IF1fTX_00_00_03_04.lod' '0' ; 
    'TC005/IF1eTX_00_00_03_05.lod' 'TC005/IF1fTX_00_00_03_05.lod' '0' ; 
    'TC006/IF1eTX_00_00_00_00.lod' 'TC006/IF1fTX_00_00_00_00.lod' '0' ;
    'TC006/IF1eTX_00_00_01_00.lod' 'TC006/IF1fTX_00_00_01_00.lod' '0' ;
    'TC006/IF1eTX_00_00_02_00.lod' 'TC006/IF1fTX_00_00_02_00.lod' '0' ;
    'TC006/IF1eTX_00_00_03_00.lod' 'TC006/IF1fTX_00_00_03_00.lod' '1' ;
    'TC006/IF1eTX_00_00_03_01.lod' 'TC006/IF1fTX_00_00_03_01.lod' '1' ;
    'TC006/IF1eTX_00_00_03_02.lod' 'TC006/IF1fTX_00_00_03_02.lod' '1' ;
    'TC006/IF1eTX_00_00_03_03.lod' 'TC006/IF1fTX_00_00_03_03.lod' '1' ;
    'TC006/IF1eTX_00_00_03_04.lod' 'TC006/IF1fTX_00_00_03_04.lod' '1' ; 
    'TC006/IF1eTX_00_00_03_05.lod' 'TC006/IF1fTX_00_00_03_05.lod' '1' ; 
    'TC007/IF1eTX_00_00_00_00.lod' 'TC007/IF1fTX_00_00_00_00.lod' '0' ;
    'TC007/IF1eTX_00_00_01_00.lod' 'TC007/IF1fTX_00_00_01_00.lod' '0' ;
    'TC007/IF1eTX_00_00_02_00.lod' 'TC007/IF1fTX_00_00_02_00.lod' '0' ;
    'TC007/IF1eTX_00_00_03_00.lod' 'TC007/IF1fTX_00_00_03_00.lod' '2' ;
    'TC007/IF1eTX_00_00_03_01.lod' 'TC007/IF1fTX_00_00_03_01.lod' '2' ;
    'TC007/IF1eTX_00_00_03_02.lod' 'TC007/IF1fTX_00_00_03_02.lod' '2' ;
    'TC007/IF1eTX_00_00_03_03.lod' 'TC007/IF1fTX_00_00_03_03.lod' '2' ;
    'TC007/IF1eTX_00_00_03_04.lod' 'TC007/IF1fTX_00_00_03_04.lod' '2' ; 
    'TC007/IF1eTX_00_00_03_05.lod' 'TC007/IF1fTX_00_00_03_05.lod' '2' ; 
    'TC007/IF1eTX_00_00_03_06.lod' 'TC007/IF1fTX_00_00_03_06.lod' '2' ;
    'TC007/IF1eTX_00_00_03_07.lod' 'TC007/IF1fTX_00_00_03_07.lod' '2' ;
    'TC007/IF1eTX_00_00_03_08.lod' 'TC007/IF1fTX_00_00_03_08.lod' '2' ;
    'TC007/IF1eTX_00_00_03_09.lod' 'TC007/IF1fTX_00_00_03_09.lod' '2' ;
    'TC007/IF1eTX_00_00_03_10.lod' 'TC007/IF1fTX_00_00_03_10.lod' '2' ; 
    'TC007/IF1eTX_00_00_03_11.lod' 'TC007/IF1fTX_00_00_03_11.lod' '2' ;
    'TC008/IF1eTX_00_00_00_00.lod' 'TC008/IF1fTX_00_00_00_00.lod' '0' ;
    'TC008/IF1eTX_00_00_01_00.lod' 'TC008/IF1fTX_00_00_01_00.lod' '0' ;
    'TC008/IF1eTX_00_00_02_00.lod' 'TC008/IF1fTX_00_00_02_00.lod' '0' ;
    'TC008/IF1eTX_00_00_03_00.lod' 'TC008/IF1fTX_00_00_03_00.lod' '2' ;
    'TC008/IF1eTX_00_00_03_01.lod' 'TC008/IF1fTX_00_00_03_01.lod' '2' ;
    'TC009/IF1eTX_00_00_00_00.lod' 'TC009/IF1fTX_00_00_00_00.lod' '0' ;
    'TC009/IF1eTX_00_00_01_00.lod' 'TC009/IF1fTX_00_00_01_00.lod' '0' ;
    'TC009/IF1eTX_00_00_02_00.lod' 'TC009/IF1fTX_00_00_02_00.lod' '0' ;
    'TC009/IF1eTX_00_00_03_00.lod' 'TC009/IF1fTX_00_00_03_00.lod' '2' ;
    'TC009/IF1eTX_00_00_03_01.lod' 'TC009/IF1fTX_00_00_03_01.lod' '2' ;
    'TC010/IF1eTX_00_00_00_00.lod' 'TC010/IF1fTX_00_00_00_00.lod' '0' ;
    'TC010/IF1eTX_00_00_01_00.lod' 'TC010/IF1fTX_00_00_01_00.lod' '0' ;
    'TC010/IF1eTX_00_00_02_00.lod' 'TC010/IF1fTX_00_00_02_00.lod' '0' ;
    'TC010/IF1eTX_00_00_03_00.lod' 'TC010/IF1fTX_00_00_03_00.lod' '2' ;
    'TC010/IF1eTX_00_00_03_01.lod' 'TC010/IF1fTX_00_00_03_01.lod' '2' ; 
    'TC13/IF1eTX_00_00_03_00.lod'  'TC13/IF1fTX_00_00_03_00.lod'  '0' ;
    'TC13/IF1eTX_00_00_03_01.lod'  'TC13/IF1fTX_00_00_03_01.lod'  '0' ; 
    'TC13/IF1eTX_00_00_03_02.lod'  'TC13/IF1fTX_00_00_03_02.lod'  '0' ; 
    'TC99/IF1eTX_00.lod'           'TC99/IF1fTX_00.lod'           '2' ;          
    };


%-- 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');

    %-- Call Matlab function
    mOut = mPuncturing(double(In),length(In),str2double(TV(i,3)));
    
    %-- Compare
    if (length(mOut) == length(double(Ref)))
              result(i) = any(mOut-double(Ref));
    else
        result(i) = 1;
        length(mOut)
        length(double(Ref))
    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
disp('Test cases from the spec ');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
disp('Testing Puncturing mode 0 (no puncturing) for OFDMA  ');

In1_bits = mGetBin('../vector/in/In1_bits.lod','uint8','R');
Ref1_bits= mGetBin('../vector/ref/Ref1_bits.lod','uint8','R');

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

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

disp('Testing Puncturing mode 2 (2 out of 6) for OFDMA  ');

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 = mPuncturing(In2_bits,length(In2_bits),2);

if any(mOut_bits-Ref2_bits)
    disp('Error: Matlab function failed for standard test.');
    status = -1;
else
    disp('OK: Matlab function succeeded for standard test.');
end

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

end

⌨️ 快捷键说明

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