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