2016-04-29 11 views
3

を連結します。ですから、例えば縦私は<code>2*N</code>行列<code>7</code>マトリックス内に垂直で連結する行列<code>7</code>行列<code>N</code>サイズ<code>2</code>の多次元マトリックス<code>J</code>を持つ多次元マトリックス

>> J(:,:,1:2) 

ans(:,:,1) = 

1.0000   0   0 0.2263   0 0.0069 0.4996 
    0 1.0000   0 1.4156   0 -0.1665 0.0208 

ans(:,:,2) = 

2.0000   0   0 -0.3432   0 -0.0069 0.4996 
    0 3.0000   0 1.3919   0 0.1665 0.0208 

は、これは行うことができますどのように

1.0000   0   0 0.2263   0 0.0069 0.4996 
    0 1.0000   0 1.4156   0 -0.1665 0.0208 
2.0000   0   0 -0.3432   0 -0.0069 0.4996 
    0 3.0000   0 1.3919   0 0.1665 0.0208 

に連結することが必要とするのか? MATLABはそれを列優先の意味されているので、あなたがpermuteを必要とする理由がある

reshape(permute(J, [1,3,2]),[],size(J,2)); 

2*N行列7行列に変更するディメンションの順序を変更し、その後reshapeする

答えて

3

使用permute最初に列を下に移動することによって、多次元配列の要素をベクトルとして格納します。だからあなたが再形成を呼び出すと、まず列を見てから行がなくなったときに次の列に移動します。第1次元の下に3次元を積み重ねたいので、reshapeに行がなくなると、その3次元に移動することを確認する必要があります。 reshapeは実際には2番目の次元に移動するので、2番目と3番目の次元を交換するにはpermuteを使用する必要があります。

楽しみのためだけに、ここでそれを行うための別の方法です:

J2 = permute(J, [2,1,3]); 
J2(:,:).' 

そして第三に代わり

完全に働いた
C = mat2cell(J, size(J,1), size(J,2), ones(1,1,size(J,3))); 
cat(1,C{:}) %// Or vertcat(C{:}) 
+0

comma-separated-listsを使用して!助けてくれてありがとう、非常に感謝します。 – mittwoch1989

関連する問題

 関連する問題