2017-11-13 13 views
2

Matlabでインデックス付けの問題があります。という問題に応じて、m次元配列Aがm であるとします。Matlabでm次元配列をインデックスする(mは一定ではない)

は、私はインデックス

x = [i2, ..., im] 

とのベクトルを持っていると仮定し、私はベクトル

A(:, i_2, ..., i_m) 

を取りたいです。すべての場合においてmが一定であれば、それはそれほど困難ではない。ちょうど

i_j = x(j), j = 2, ..., m 

と言うことができます。 ifループなしでこれを行うことは可能ですか?(そうすれば 'もしm == 2なら..もしm == 3なら...というように)?これは簡単にセル配列にxを変換し、それからcomma-separated listを生成して行うことができる

答えて

3

助けを

ありがとう:

A = rand(3,3,3,3,3); % example A 
x = [2 1 3 2]; % example x 
ind = num2cell(x); 
result = A(:, ind{:}); 
+1

おかげで、それは私が:-) – Koen

+1

小ぎれいなトリックたいまさにそれです:あなたが望むセル配列に '': ''を追加することができます。たとえば、次のようになります。 'ind = [{':'} num2cell(x)];結果= A(ind {:}); ' – gnovice

関連する問題