📄 secondcounterinterleave.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 + -