在matlab中重塑3D数据

时间:2013-08-25 21:33:58

标签: matlab

我在尺寸3x3x10的matlab中有这个三维数据。我想要的是将其重塑为大小/尺寸为10x9的数据。这样每个i,j,1:10。我在这个新数据中有一列。我该怎么做。我尝试使用reshape(数据,10,9)。它给了我一个大小为10x9的数据结构。但是,我怀疑它是如何安排的。

我想重新塑造它,如果new_data是我的大小为10x9的新数据,我的第一列是old_data(1,1,:)。我的新数据的第二列是old_data(1,2,:)等等

2 个答案:

答案 0 :(得分:1)

我个人厌恶在Matlab中使用for循环。我认为更好的方法是改变尺寸,然后再重塑。此外,您不清楚要排列数据的顺序。你应该能够通过摆弄permute函数调用中的维度数来实现你想要的。

% B is a 3x3x10, permute to 10x3x3, then reshape into 10x9
% Change the ordering of the dimension in permute to achieve the desired result
% remember: reshape takes elements out of B column by column.

newB = reshape(permute(B,[3 1 2]),10,9);

% newB is a 10x9 matrix, where each row is the entries of the 3x3 matrix
% the first column is element 1:9:82

答案 1 :(得分:0)

你可以这样做:

for i = 1:size(x,3)
    x(:,:,i) = x(:,:,i).';
end
newData = reshape(x,[],size(x,3)).'