我在矩阵中得到了一个数据集,如下所示(从 Excel 导入):
matrix =
Cat1 1 2 3 4
Cat2 9 10 11 12
Cat3 17 18 19 20
Cat1 5 6 7 8
Cat2 13 14 15 16
Cat3 21 22 23 24
我想将其重塑为 3 个相同大小的向量(每个类别一个)来绘制堆积条形图。重塑操作后向量应如下所示(如果向量具有第一列的名称并且矩阵可以是任意大小,那就太好了):
cat1 = [ 1 2 3 4 5 6 7 8]
cat2 = [ 9 10 11 12 13 14 15 16]
cat3 = [17 18 19 20 21 22 23 24]
我真诚地希望这不会重复。我无法在其他重塑问题的帮助下提出可行的解决方案。
如果您的数据是矩阵,则可以在索引时操纵行的顺序,因此您可以执行以下操作:
rows = reshape(1:size(matrix, 1), n, []).';
res = reshape(matrix(rows, :).', [], n).';
得到的矩阵res
由串联的行组成。
该解决方案也适用于元胞数组,但您需要额外的cell2mat
将结果转换为矩阵。
Example
matrix = [1:4; 9:12; 17:20; 5:8; 13:16; 21:24];
n = 3;
rows = reshape(1:size(matrix, 1), n, []).';
res = reshape(matrix(rows, :).', [], n).';
结果是:
res =
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)