1

この 3 次元データは、寸法 3x3x10 の matlab にあります。私が欲しいのは、サイズ/寸法10x9のデータに再形成することです。各 i,j,1:10 のようになります。この新しいデータには 1 つの列があります。どうすればできますか。reshape(data, 10,9) を使ってみました。サイズが 10x9 のデータ構造が得られました。しかし、それがどのように配置されたかは疑問です。

new_data がサイズ 10x9 の新しいデータである場合、最初の列が old_data(1,1,:) になるように形を変えたいと思います。新しいデータの 2 番目の列は old_data(1,2,:) などです。

4

2 に答える 2

1

私は個人的にfor、Matlab でのループの使用を嫌います。より良い方法は、寸法を並べ替えてから再形成することだと思います。また、データを並べる順序が明確ではありません。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
于 2013-08-25T22:54:23.497 に答える
0

あなたはこれを行うことができます:

for i = 1:size(x,3)
    x(:,:,i) = x(:,:,i).';
end
newData = reshape(x,[],size(x,3)).'
于 2013-08-25T21:49:55.203 に答える