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

📄 secondcounterinterleave.m

📁 用于WCDMA的交织编解码部分
💻 M
字号:
function [dataStream_Output] = secondCounterInterleave(dataStreamInput)
%计算交织矩阵的行数和列数
inputBitNumber = length(dataStreamInput);
columnNumber = 30;
permutationPattern = [1 21 11 6 16 26 4 14 24 9 19 29 2 12 22 7 17 27 5 15 25 20 10 30 13 3 8 23 28 18];
rowNumber = ceil(inputBitNumber/columnNumber);
matrix = zeros(rowNumber, columnNumber);
index = 1;
insertedBitNumber = rowNumber * columnNumber - inputBitNumber;
if (insertedBitNumber == 0)
    for j = 1:columnNumber
        for i = 1:rowNumber
            matrix(i,j) = dataStreamInput(index);
            index = index + 1;
        end 
    end
else
    insertedBitIndex = [columnNumber-insertedBitNumber+1:columnNumber]
    for j = 1:columnNumber
        for i = 1:rowNumber
            if (~isempty(find(insertedBitIndex == permutationPattern(j))) & i == rowNumber)
                continue;
            end 
            matrix(i,j) = dataStreamInput(index);
            index = index + 1;
        end 
    end
end

%perform counter inter-column permutation
tempMatrix =[];
for i = 1:columnNumber
    tempMatrix(:, permutationPattern(i)) = matrix(:, i);
end
matrix = tempMatrix;



%Bit-output from rectangular matrix with pruning
index = 1;
flag = 0;
if (insertedBitNumber == 0)
    for i = 1:rowNumber 
        for j = 1:columnNumber
            dataStream_Output(index) = matrix(i, j);        
            index = index + 1;
        end
    end
else
    for i = 1:rowNumber 
        for j = 1:columnNumber
            dataStream_Output(index) = matrix(i, j);        
            index = index + 1;
            if (index > inputBitNumber)
                flag = 1;
                break;
            end
        end
        if (flag == 1)
            break;
        end
    end
end

⌨️ 快捷键说明

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