matlab中向量的连续元素
Consecutive elements of a vector in matlab
我正在尝试显示向量(在本例中为向量 x)的 n 个连续数字的某些值。
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
x
是双数组。实现此目标的简单方法是什么?
最简单的方法是将 x
重塑为一个矩阵,每个值所需的位数作为行数(MATLAB 是 column-major)。例如,要获取 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);
输出是一个 3 元素双向量:
15
12
3
我正在尝试显示向量(在本例中为向量 x)的 n 个连续数字的某些值。
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
x
是双数组。实现此目标的简单方法是什么?
最简单的方法是将 x
重塑为一个矩阵,每个值所需的位数作为行数(MATLAB 是 column-major)。例如,要获取 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);
输出是一个 3 元素双向量:
15
12
3