www.gusucode.com > LTE_TX_PDSCH > LTE_TX_scrambler.m

    %% LTE TX scrambler 

function output = LTE_TX_scrambler(input, subframe_corr, N_coded_bits)
    
    Poly1 = [31 3 2 1 0]; % gold code polynomial initialization 
    Poly0 = [31 3 0];
    h0 = commsrc.pn('GenPoly', Poly0);
    h1 = commsrc.pn('GenPoly', Poly1);
    Poly1_Init = (2^14)*1 + (2^13)*1 + (2^9)*(subframe_corr-1)+1;
    h1.InitialStates = de2bi(Poly1_Init,31);
    Nc = 1600; % Offset according to 3GPP 36.211 Rel 9 sec 7.2
    h0.NumBitsOut = N_coded_bits + Nc;
    h1.NumBitsOut = N_coded_bits + Nc;
    pn_seq0 = generate(h0);
    pn_seq1 = generate(h1);
    pn_seq = mod(pn_seq0(Nc+1:end)+pn_seq1(Nc+1:end),2)';
    output  = mod(input + pn_seq,2);