次元LxLxL..xLの行列の要素のインデックス[x1 x2 ... xd]を返すことができる必要があります。次元数dは、私の関数に与えられる変数です。行列は存在せず、代わりに長さL^dの線形配列があります。配列内の与えられたインデックスiに対して、私は行列内の等価なインデックスを知りたいと思います。私はすでに単純なforループを使ってこれを行うことができますが、ind2subを何とか使うことができるかどうか知りたいのです。私が持っている問題は、私がしなければ可変次元行列の添え字を返す
x=zeros(1,d)
x=ind2sub(L,i)
xは、単一の番号ではなく、すべての添字の配列を再割り当てされていることです。これを行う方法はありますか?
ありがとうございます!これは、次元の複数の変更を伴うシミュレーションの一部です。 – Ivan
あなたは単に 'reshape()'を使うかもしれません。 mxarrayヘッダーのディメンションメタデータが単調に変わるので安いです。基礎となるデータはそのままメモリに残されます。効果的に、Matlabの配列サポートはすでにこのようなことを行い、ユーザーコードでそれを再実装することはおそらくコードを遅くするでしょう。 –
とても賢い。ありがとうありがとう。 – Frederick