热线电话:13121318867

登录
2019-02-15 阅读量: 1016
如何在Matlab中对行矩阵的元素进行不等长度分组

我在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),则需要采用其他方法。

0.0000
2
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子