如何在matlab中对矩阵中的元素进行分组?
例如,我有如何在matlab中对矩阵中的元素进行分组?,matlab,Matlab,例如,我有[1;1;0;0;1;0;0;0;1;1;1;0]这个列,我想输出四个元素的组: 1100 1000 1110 bvec = [1;1;0;0;1;0;0;0;1;1;1;0]; bvec = char(reshape( bvec, 4, numel(bvec)/4 ) + '0').'; 如何做到这一点?我用accumarray()试用过,但不起作用。这是怎么回事 A = [1;1;0;0;1;0;0;0;1;1;1;0]; B = reshape(A,4,3)'; %//DON
[1;1;0;0;1;0;0;0;1;1;1;0]
这个列,我想输出四个元素的组:
1100
1000
1110
bvec = [1;1;0;0;1;0;0;0;1;1;1;0];
bvec = char(reshape( bvec, 4, numel(bvec)/4 ) + '0').';
如何做到这一点?我用accumarray()试用过,但不起作用。这是怎么回事
A = [1;1;0;0;1;0;0;0;1;1;1;0];
B = reshape(A,4,3)'; %//DONT FORGET THE `'` or your results would be wrong...
C = strcat(num2str(B)); %C is a char Array currently
C =
1 1 0 0
1 0 0 0
1 1 1 0
删除空间:
你可以做C(:,2:3)=[];C(:,3:4)=[];C(:,4:5)=[];要创建3 x 4字符数组,请执行以下操作:
C =
1100
1000
1110
但你为什么会对呢?因此,更好的方法是:
regexprep(cellstr(C),'[^\w'']',''); %//Now a cell Array. It is generally better practice to store strings as Cell Array instead of Char Array.
ans =
'1100'
'1000'
'1110'
假设您的向量只包含元素0和1,并且有n*4个元素:
1100
1000
1110
bvec = [1;1;0;0;1;0;0;0;1;1;1;0];
bvec = char(reshape( bvec, 4, numel(bvec)/4 ) + '0').';
让我们把它分解一下:
重塑(bvec,numel(bvec)/4,4)代码> 将列向量(也可以是行向量)分解为一个有4行的矩阵(4位[?]组),它是一个类型为double的4*n矩阵
添加一个48的数值来表示ASCII字符“+'0'
”;这将0
的所有值转换为0
(ASCII'48
),并将0
的所有值转换为1
(ASCII'49
)1
将矩阵转换为字符类型矩阵char(…)
在最后转置矩阵,得到一个n*4矩阵”
bvec =
1100
1000
1110
不确定您真正想要的是什么输出,您能用实际的Matlab语法将其放入您的问题中吗?3个整数的数组还是3x4矩阵?或者其他什么?看看索引方法、
重塑
和num2str
函数。HTHI有[1;1;0;0;1;0;0;0;1;1;1;1;0]这是列,我想输出四个元素的组:“1100”“1000”“1110”这样不是作为字符串的矩阵你想你的结果也是字符串吗?仅作为字符串,而在这里整形不起作用……你需要在整形后转置矩阵,否则列/行索引将是错误的。或者加载行向量而不是列向量。@行,Snehal-你是对的,这需要修复。但我现在得走了!;)@增加了换位,修正了我的解决方案。见上文。)如果您对该答案满意,请按“接受”复选框。