Matlab 从单列数据集中提取行块以分隔连续列

Matlab 从单列数据集中提取行块以分隔连续列,matlab,matrix,data-extraction,submatrix,Matlab,Matrix,Data Extraction,Submatrix,我有一个数据集,其中包括1列中的所有数据。但是,每n行出现一个新的子数据集。使用MATLAB,我需要获取这些子数据集中的每一个子数据集,并将它们放在一个单独的顺序列中。例如,这: 第1栏 1 3 2 1 3 2 1 3 2 为此: 第1列|第2列|第3列| 1 1 1 3 3 3 2 2 2 您可以这样使用命令: my_matrix = reshape(my_vector, num_rows, num_cols); 您还可以将上面的num\u cols替换为[],让MATLAB

我有一个数据集,其中包括1列中的所有数据。但是,每n行出现一个新的子数据集。使用MATLAB,我需要获取这些子数据集中的每一个子数据集,并将它们放在一个单独的顺序列中。例如,这:

第1栏

1
3
2
1
3
2
1
3
2
为此:

第1列|第2列|第3列|

1  1  1
3  3  3
2  2  2
您可以这样使用命令:

my_matrix = reshape(my_vector, num_rows, num_cols);
您还可以将上面的
num\u cols
替换为
[]
,让MATLAB自动计算出将数据放入
num\u行所需的列数。类似地,您可以用
[]
替换
num\u行
,并让MATLAB计算出将数据放入
num\u列所需的行数


请注意,如果
my_vector
不完全包含
num_rows*num_cols
元素,MATLAB将抛出一个错误。换句话说,如果大小不匹配,它将不会填充零或截断数据。

@user3743235(OP)如果您的最后一个子数据集中的元素较少,您可以/应该添加if大小写或逻辑索引,以将数据填充为
NaNs
。这样做的好处是,
NaNs
不会被误读为
0
数据值,而且重塑仍然适用于任何数据集。如果mod(numel(data),n)~=0…
,您可以使用
来执行此操作。我写这篇评论是因为它只是@Engineero解决方案的一个小补充。啊,太棒了,正是我想要的工具。谢谢你的补充。