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

📄 secondinterleave.m

📁 用于WCDMA的交织编解码部分
💻 M
字号:
function [dataStreamOutput] = secondInterleave(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;
flag = 0;
for i = 1:rowNumber
    for j = 1:columnNumber
        matrix(i,j) = dataStreamInput(index);
        index = index + 1;
        if (index > inputBitNumber)
            flag = 1;
            break;
        end
    end
    if (flag == 1)
        break;
    end
end

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


%Bit-output from rectangular matrix with pruning
insertedBitNumber = rowNumber * columnNumber - inputBitNumber;
index = 1;
if (insertedBitNumber == 0)
    for i = 1:columnNumber 
        for j = 1:rowNumber
            dataStreamOutput(index) = matrix(j, i);        
            index = index + 1;
        end
    end
else
    insertedBitIndex = [columnNumber-insertedBitNumber+1:columnNumber];     %交织前插入的比特的索引下标
    for i = 1:columnNumber 
        for j = 1:rowNumber
            if (~isempty(find(insertedBitIndex == permutationPattern(i))) & j == rowNumber)
                continue;
            end 
            dataStreamOutput(index) = matrix(j, i);        
            index = index + 1;
        end
    end
end

⌨️ 快捷键说明

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