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

📄 bitloading.m

📁 extension de ns-2 about umts and wimax imlemented on linux
💻 M
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%
%%%%%   Bit Loading Algorithm
%%%%%
%%%%%   A Practical Discrete Multitone Transceiver Loading Algorithm 
%%%%%    for transmission over Spectrally  Shaped Channel
%%%%%   Authors:  Peter S Chow, John M Coffi, John A C Bingham
%%%%%   IEEE Transactions on Communications Vol 43, No 2/3/4, Feb/Mar/Apr
%%%%%   1995
%%%%%
%%%%%   Written By: Jaganathan Gnanavelu 
%%%%%   E mail Id: jaganathang@ieee.org 
%%%%%   Date: June 2006 
%%%%%   Updated: July 2007
%%%%%
%%%%%    Step 1 Compute  SNR of all subchannels
%%%%%     
%%%%%    CTLM CPE Null Loop UpStream SNR value at G.992.5 mode is taken from lab.
%%%%%    
%%%%%    Step 2 Let Gamma Margin is 0 dB
%%%%%
%%%%%    Step 3   For 1 to N compute Bi_Value, Bi_Round, Diff_Value
%%%%%       bi = log2( 1 + SNR/(GammaMargin+SNRGap))
%%%%%       Bi_Round = round(Bi_Value)
%%%%%       Diff_Value = Bi_Value - Bi_Round
%%%%%
%%%%%    Step 4   Compute sum(Bi_Value)
%%%%%
%%%%%    Step 5   Compute New Gamma Margin
%%%%%               Gamma Margin  =   Gamma Margin +
%%%%%               10log10(2((Bi_Total-Bi_Target)/Used Carrier))
%%%%%
%%%%%   Step 6    Increment the counter
%%%%%
%%%%%   Step 7     If Bi_Total ~= Bi_Target and Count < Max Count
%%%%%              Used Carrier = N and Goto  Step 3
%%%%%
%%%%%   Step 8     If Bi_Total > Bi_Target 
%%%%%                   Subtract 1 bit from sub-carrier having 
%%%%%                   smallest difference and Repeat Until 
%%%%%                   Bi_Total = Bi_Target
%%%%%
%%%%%   Step 9     If Bi_Total < Bi_Target 
%%%%%                   Add 1 bit, sub-carrier having 
%%%%%                   largest difference and Repeat Until 
%%%%%                   Bi_Total = Bi_Target
%%%%%
%%%%%
%%%%%   Initial Gamma Margin 0 dB
%%%%%
%%%%%   SNR Gap 9.8 dB
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all
clc
close all
NSC = 32;
SNRGap = 10^(9.8/10);
GammaMargin = 1;
Rx_Carrier  = 32;
snr = loadhex32('snr1.out',20);
snr_32 = snr(1:Rx_Carrier);
SNR_UpStream = 10*log10(snr+1);
figure,stem(SNR_UpStream(1:Rx_Carrier),'m*');
title('UpStream SNR ');
xlabel('Bin'), ylabel('dB')
grid on
%%% Bit Loading Step Starts
Bi_Target = 325        % Initialize the Bit Target
for i=1:20,
    Used_Carrier = Rx_Carrier;
    SNR_Gamma = GammaMargin*SNRGap;
    Bi_Value = log2(1+ snr_32/SNR_Gamma);               
    Bi_Round = round(Bi_Value);
    Diff_Value = Bi_Value -  Bi_Round;      % Step 3
    for m = 1:Rx_Carrier,
        if Bi_Value(m)==0
            Used_Carrier = Used_Carrier - 1;
        end
    end
    Bi_Total = sum(Bi_Round);                %   Step 4
    power_2 = 2^((Bi_Total-Bi_Target)/Used_Carrier);
    GammaMargin = GammaMargin + 10*log10(power_2);
    if Bi_Total==Bi_Target
        break;
    end
end    
    Min_Diff = Diff_Value(1);
    if Bi_Total > Bi_Target,    
        while Bi_Total > Bi_Target,
            Min_Diff = Diff_Value(1);            
            for m = 2:Rx_Carrier,            
                if Min_Diff > Diff_Value(m)
                    Min_Diff = Diff_Value(m);
                    Min_Index = m;
                end              
            end
            Bi_Round(Min_Index) = Bi_Round(Min_Index)-1;
            Bi_Total = sum(Bi_Round);                    
            Diff_Value = Bi_Value -  Bi_Round;            
        end
    end
%    Max_Diff = Diff_Value(1);
    if Bi_Total < Bi_Target,
        while Bi_Total < Bi_Target,
        Max_Diff = Diff_Value(1);            
            for m = 2:Rx_Carrier,            
                if Max_Diff < Diff_Value(m)
                    Max_Diff = Diff_Value(m);
                    Min_Index = m;
                end              
            end
               Bi_Round(Min_Index) = Bi_Round(Min_Index)+1;
               Bi_Total = sum(Bi_Round);                    
               Diff_Value = Bi_Value -  Bi_Round;                        
        end
    end    
figure,stem(Bi_Round)

⌨️ 快捷键说明

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