我在Matlab中有一个位流,以行矩阵的形式。例如[0 0 1 1 0 1 1 1 0 1 0 1 1 0 1 1 ...]如果它们匹配某个位组合,我想将它们分组成不等长的帧......任何想法我该怎么办?在Matlab中。
clear all;
bits = randi([0 1],1,100);
a1 = [0 0];
a2 = [1 0 0];
a3 = [0 1 0];
a4 = [1 1 0];
a5 = [0 1 1];
a6 = [1 0 1 0];
a7 = [1 1 1 0];
a8 = [1 1 1 1];
a9 = [1 0 1 1];
我想以a1 a2 a3 ......帧的形式对比特流进行分组或映射..
解决办法:
这听起来像你想解析顺序的比特流,发现在不等长的模式匹配a1通过a9。您没有明确指出的是您想要的输出。您可以将2,3或4位的组分组到单元阵列的单元格中,也可以创建一个新的整数数组1到9,表示匹配的位模式。这是实现第一种选择的一种方法:
function bitCell = group_bits(bits)
grouping = [];
nBits = numel(bits);
index = 1;
while (index <= nBits)
if (index+1 <= nBits) && isequal(bits(index+[0 1]), [0 0])
grouping = [grouping 2];
index = index+2;
elseif (index+2 <= nBits) && ...
ismember(bits(index+(0:2)), [1 0 0; 0 1 0; 1 1 0; 0 1 1], 'rows')
grouping = [grouping 3];
index = index+3;
elseif (index+3 <= nBits)
grouping = [grouping 4];
index = index+4;
else
grouping = [grouping nBits-index+1];
index = nBits+1;
end
end
bitCell = mat2cell(bits, 1, grouping);
end
在问题中对您的样本模式进行测试:
>> bits = [0 0 1 1 0 1 1 1 0 1 0 1 1 0 1 1];
>> bitCell = group_bits(bits)
bitCell =
1×5 cell array
[1×2 double] [1×3 double] [1×4 double] [1×4 double] [1×3 double]
给出正确的分组。如果您想对这些进行分类(即第二个单元格内容匹配a4),则需要采用其他方法。








暂无数据