A(:,:,1)=[1,2,3;2,3,4]
、A(:,:,2)=[3,4,5;4,5,6]
というような行列があるとします。行列の第3次元を削除する
ベクター(1,2,3)、(2,3,4)、(3,4,5)、(4,5,6)にアクセスしてプロットする最も簡単な方法はどれですか。私はB=[A(:,:,1);A(:,:,2)]
を作成しようとしましたが、私は任意の数のAに手続きが必要です。
これは些細なことではないと私は満足しています。ここでは、重要ではありません順序を想定し
A(:,:,1)=[1,2,3;2,3,4]
、A(:,:,2)=[3,4,5;4,5,6]
というような行列があるとします。行列の第3次元を削除する
ベクター(1,2,3)、(2,3,4)、(3,4,5)、(4,5,6)にアクセスしてプロットする最も簡単な方法はどれですか。私はB=[A(:,:,1);A(:,:,2)]
を作成しようとしましたが、私は任意の数のAに手続きが必要です。
これは些細なことではないと私は満足しています。ここでは、重要ではありません順序を想定し
あなたは長さ3のベクトルのためにそれを行うことができる方法である:任意の次元のベクトルに対する
B = reshape(shiftdim(A,2), [], 3)
plot(B')
、size(A,2)
によって3を交換するあなたが縦に「考える必要があります'これは、あなたがコロンのインデックスを使用できるようになります:
>> A(:,:,1) = [1,2,3;2,3,4].'; %'// NOTE: transpose of your original
>> A(:,:,2) = [3,4,5;4,5,6].'; %'// NOTE: transpose of your original
>> A(:,:)
ans =
1 2 3 4
2 3 4 5
3 4 5 6
任意の次元A
ための2つのコロン作品と大腸インデックス:あなたはそれをマスターしたら、MATLABで
>> A(:,:,:,:,1,1) = [1 2 3; 2 3 4].'; %'
>> A(:,:,:,:,2,1) = [3 4 5; 4 5 6].'; %'
>> A(:,:,:,:,1,2) = [5 6 7; 6 7 8].'; %'
>> A(:,:,:,:,2,2) = [7 8 9; 8 9 0].'; %'
>> A(:,:)
ans =
1 2 3 4 5 6 7 8
2 3 4 5 6 7 8 9
3 4 5 6 7 8 9 0
コロンのインデックス作成は非常に興味深く、本当に強力です。たとえば、配列内の次元数より少ないコロン数を使用する場合(前述のように)、MATLABはコロン数に等しい次元に沿って残りのデータを自動的に連結します。
したがって、A
の寸法が48の場合、2コロンでインデックスを作成すると、残りの46個の寸法が2 ndの次元に沿って連結された2D配列が得られます。 A
がちょうどM ≤ N
コロンでインデックスをN
寸法を持っていますが、あなたの場合:一般的に
あなたはM
-D配列を得るでしょう、それはM
番目次元に沿って、残りのN-M
寸法を連結したものです。だから、限り、あなたは列ではなく行上のベクトルを含むようにあなたのA
を自由に定義されているよう
(あなたがこれを行うために皆に助言する必要があり、MATLABのように、事実上すべてのものが少し速くその方法です) 、私はこれがあなたが望むことを行う最も速く、最もエレガントな方法だと思います。
ていない場合は、よく、そしてちょうどreshape
ダンのような:)の洞察力の使用のために
1:オペレーター! – bla