Matlab では、「ndgrid」を使用して 6D マトリックスを作成しています。コードは次のとおりです。
for i=1:3
dd{i}=[0 0 0 0 0 0 0 1 1 1 1 1];
ss{i}=[0 0 0 0 0 0 1 1 1 1 1 1];
end
[D1 D2 D3 S1 S2 S3] = ndgrid(dd{1},dd{2},dd{3},ss{1},ss{2},ss{3});
out = D1.*S1.*D2.*S2.*D3.*S3;
私が抱えている問題は、1 つまたは 2 つの 6-D 行列を格納するための十分なメモリがありますが、6 つの行列すべてを格納するのに十分なメモリがないことです。
[D1 D2 D3 S1 S2 S3]
ご覧のとおり、行列 D1、D2... および "out" は本質的にスパースですが、Matlab の "スパース" 機能は多次元配列では機能しません。Matlab で他の「グリッド」機能を検索しましたが、D1、D2 などを計算する中間ステップを回避するのに役立つ「グリッド」機能が見つかりません。
一般に、dd{1} が dd{2} と異なることを許可したいと考えています。また、私が投稿したこの 6-D のケースはメモリをあまり消費しませんが、8-D のケースはメモリを消費し、問題が発生しています。
この状況でメモリをより効率的に使用するためのヘルプは大歓迎です。