我正在尝试显示一个向量的n个连续数字(在本例中为向量x(的某个值。
x = [1
1
1
1
1
1
0
0
0
0
1
1
0
0
0
0
0
0
1
0
1
0
1
0
1
0
1
1
0
0
1
1
1
1
1
1
0
0
1
1
1
1
0
0
1
1
1
1
1
1
0
0
0
0
0
1
0
0
1
0
0
0
0
1
0
0
1
0
1
0
0
0
1
0
0
0
0
1
0
1
0
0
1
0
0
0
0
1
1
0
0
0
1
0
0
0
0
0
0
1
0
1
0
0
0
0
1
0
1
0
0
0
1
0
0
0
0
0
0
1
0
0
0
1
0
0
1
1
1
1
1
1
0
0
1
1
0
0
1
0
1
0
0
0
0
0
0
1
0
1
0
0];
例如,我可能想要4个连续数字的前3个值,这将是(每个4位的3个值(:
1111
1100
0011
我可能想要2个连续数字的前4个值,这将是(每个2位的4个值(:
11
11
11
00
CCD_ 1是一个双阵列。实现这一目标的简单方法是什么?
最简单的方法是将x
重塑为一个矩阵,每个值的位数为行数(MATLAB是列主(。例如,要获得4位数的值:
t = reshape(x,4,[]);
只有当x
的长度平均划分为4时,这才会起作用。您可以首先将x
裁剪到适当数量的元素,以避免长度不可整除的错误:
t = reshape(x(1:4*3),4,[]);
现在,转换为字符串的转置矩阵t
看起来像您想要的输出:
c = char(t.' + '0');
输出是一个3x4字符数组:
'1111'
'1100'
'0011'
您可以使用bin2dec
:将这些二进制表示转换回数字
b = bin2dec(c);
输出为三元双矢量:
15
12
3