2016-07-20 12 views
0

例データのこの動作について説明してください:些細なリシェイプ

tmp = reshape(magic(4), 1, 4, 4) 

とランニングtmp(1, :, :)は私が手:

>> tmp(1, :, :) 

ans(:,:,1) = 

    16  5  9  4 


ans(:,:,2) = 

    2 11  7 14 


ans(:,:,3) = 

    3 10  6 15 


ans(:,:,4) = 

    13  8 12  1 

私の混乱は、私が表示されるように4×4アレイmagic(4)を期待していということです。

  1. magic(4) is being displayed as a row in TMPのi列目(:、:、i)は, so thatサイズ私混乱して下記(TMPを(:、:、i))を `リターン1×4
  2. I場合tmp(:, 1, :)を使用してmagic(4)の最初の行を取得しようとすると、4つの結果が得られます。
ans(:,:,1) = 

    16 


ans(:,:,2) = 

    2 


ans(:,:,3) = 

    3 


ans(:,:,4) = 

    13 

私はhelp page on multidimensional arraysから、次の図を見てきましたが、magic(4)の通常の列と行のサブセットは、それぞれの行、および個々の要素を返す取得しようと、なぜ私がうまくできません。 tmp(:, i, :)magic(4)i番目の行とのj番目の列を返すように​​を返すようにします。

matlab 3d array illustration

答えて

1

あなたはrigthそれをやっている、あなただけのMATLABプロンプトを誤解されています。

tmp(:,1,:)を実行すると4つの結果が得られませんが、1x1x4という形の結果が1つありますが、Matlabは3次元で印刷できないため、各「ページ」が印刷されます。あなたは行って、これを確認することができます

x=temp(:,1,:); 

size(x) 
% ans = 
% 1  1  4 

使用すると、1つの列にそれを表示したい場合は、あなたが

x(:) 
%ans = 
% 16 
% 2 
% 3 
% 13 
ような何かを行うことができます
関連する問題