Matlab 如何叠加矩阵的子矩阵以降低维数

Matlab 如何叠加矩阵的子矩阵以降低维数,matlab,matrix,dimensions,Matlab,Matrix,Dimensions,我找不到一个很好的解决方案: 我有一个这样大小的矩阵:60x10x3 我想把它转换成这样大小的矩阵:600x3 基本上,我想把10个矩阵堆叠起来,在第一个维度中,维度为60x3,彼此相邻 如何在matlab中优雅地实现这一点 A = rand(60, 10, 3); B = reshape(A, [], size(A, 3)); 应该适用于A的任何维度。我似乎不明白预期的输出是什么,但这里有两种不同的方法来实现它。我添加了循环来创建不同的数字,以便可以研究结果 方法1-垂直或水平堆叠 s =

我找不到一个很好的解决方案:

我有一个这样大小的矩阵:60x10x3

我想把它转换成这样大小的矩阵:600x3

基本上,我想把10个矩阵堆叠起来,在第一个维度中,维度为60x3,彼此相邻

如何在matlab中优雅地实现这一点

A = rand(60, 10, 3);
B = reshape(A, [], size(A, 3));

应该适用于
A

的任何维度。我似乎不明白预期的输出是什么,但这里有两种不同的方法来实现它。我添加了循环来创建不同的数字,以便可以研究结果

方法1-垂直或水平堆叠

s = zeros(60,10,3);
for x = 1:9
    s(:,x,:) = x;
end
t = reshape(s, 600, 3); %vert
u = t'; %hori
s = zeros(60,10,3);
for x = 1:9
    s(:,x,:) = x;
end
t = [s(:,:,1) , s(:,:,2), s(:,:,3)]; % hori
t = [s(:,:,1) ; s(:,:,2); s(:,:,3)]; % vert
方法2-垂直或水平堆叠第三维

s = zeros(60,10,3);
for x = 1:9
    s(:,x,:) = x;
end
t = reshape(s, 600, 3); %vert
u = t'; %hori
s = zeros(60,10,3);
for x = 1:9
    s(:,x,:) = x;
end
t = [s(:,:,1) , s(:,:,2), s(:,:,3)]; % hori
t = [s(:,:,1) ; s(:,:,2); s(:,:,3)]; % vert

希望有帮助,但这表明在Matlab中有多种方法可以实现相同的输出。非常强大的工具。

这里有一个解决方案

将尺寸为60x3的10个矩阵堆叠在第一个维度中

我想我自己甚至找到了一个(相当难看的)解决方案,这就是为什么我要问,谢谢你展示了不同的可能性。基本上,随着时间的推移,我有10组60个测量值。我认为这10组是独立的测量值。基本上有600个数据点,所以我不需要逻辑上把它们分开