2017-09-26 7 views
1

大きな配列のデータを3Dマトリックスに特定の順序でインポートする方法を理解しようとしています。私はすでに2つの質問をしましたが、私はまだ信頼できる回答を得ておらず、また投票しました。それ以来、私はいくつかの仕事をしており、reshape機能を使用して3Dマトリックスにデータをインポートすることができました。実際の問題を撮影する代わりに、これは実際の問題のシミュレーションです。行列の最初のページと第二のnd配列の各ページにトランスポーズする方法は?

k=1:27 % create a array of 27 data 
r=reshape(k,[3,3,3]) % convert the array into 3 x 3 x 3 matrix, 

結果は、データが列に沿って配置されているが、私は列に沿ってそれらを配置したかった、transpose機能は、NDアレイでは動作しません、私がしようとしましたpermuteを使用してください。しかし、私は望む結果を得られませんでした。一つの解決策が各ページにtransposeを実行しますが、それは3Dマトリックスを多くの2Dマトリックスに分解します。

r(:,:,1) = 

1  4  7 
2  5  8 
3  6  9 

r(:,:,2) = 

10 13 16 
11 14 17 
12 15 18 

期待される結果がでなければなりません、

r(:,:,1) = 

1  2  3 
4  5  6 
7  8  9 

Link to the actual problem is,

おかげ

答えて

2

はこれが何をしたいですか?

result = permute(r, [2 1 3]); 

これにより、最初の2つのディメンションが置換されます。あなたの例r

>> k = 1:27; 
>> r = reshape(k, [3,3,3]); 
>> result = permute(r, [2 1 3]); 
>> result 
result(:,:,1) = 
    1  2  3 
    4  5  6 
    7  8  9 
result(:,:,2) = 
    10 11 12 
    13 14 15 
    16 17 18 
result(:,:,3) = 
    19 20 21 
    22 23 24 
    25 26 27 
+0

について、最初のページの最初の行は、1,2,3でない1,4,7である必要があり、私はすでにそれを試してみましたが、あなたはそれが動作しません見ることができます。 – Manoj

+1

@Manoj申し訳ありません、編集済みです。今すぐ参照してください –

+1

私は、結果がチェックされると、答えが正しい順序で、多くのおかげで、これは、時間の多くを保存している – Manoj

関連する問題