Matlabの数学演算から得られるn-D行列の要素にアクセスするにはどうすればよいですか?インデックスが数学的演算から来るn-D行列の要素にアクセスする方法
たとえば、私はAと呼ばれる4Dマトリックスを持っています。
(3,4,5,6) - (2,3,4,5)から得られた要素1,1,1,1にアクセスしたいと思います。
は私が配列の任意の次元Dことと減算からの配列は常にD要素長くなることができることを仮定してこれを行うことができます方法はありますか?
Matlabの数学演算から得られるn-D行列の要素にアクセスするにはどうすればよいですか?インデックスが数学的演算から来るn-D行列の要素にアクセスする方法
たとえば、私はAと呼ばれる4Dマトリックスを持っています。
(3,4,5,6) - (2,3,4,5)から得られた要素1,1,1,1にアクセスしたいと思います。
は私が配列の任意の次元Dことと減算からの配列は常にD要素長くなることができることを仮定してこれを行うことができます方法はありますか?
別のアプローチは、コンマ区切りのリストに、セル配列に変換することです:
A = rand(3,4,5,6); % example A
t = [2 1 3 4]; % example index
u = num2cell(t);
result = A(u{:});
可能な方法の1つは、MATLABが任意のn次元配列と行列タイプのインデックス付けに線形インデックス付けを使用できるという事実を利用することです。次に、演算結果の線形インデックスを計算するだけです。
これを行うには、よりエレガントな方法があるかもしれませんが、x
があなたの操作の結果を保持する配列であれば、次はそれをここに助けるべきであるようsub2ind
機能が感じる
element = A(sum((x-1).*(size(A).^[0:length(size(A))-1]))+1);
作品、しかし、そう思わない。
ナイスアプローチ!それは私が投稿しようとしていた答えの一部でした:-) –