在 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;
我遇到的问题是,虽然我有足够的内存来存储一个或两个 6-D 矩阵,但我没有足够的内存来存储所有 6 个矩阵:
[D1 D2 D3 S1 S2 S3]
如您所见,矩阵 D1、D2... 和“out”本质上是稀疏的,但 Matlab 中的“稀疏”功能不适用于多维数组。我在 Matlab 中搜索了其他“网格”功能,但找不到可以帮助我避免计算 D1、D2 等中间步骤的“网格”功能。
一般来说,我希望 dd{1} 与 dd{2} 不同。此外,我发布的这个 6-D 案例不会占用太多内存,但 8-D 案例会,这就是我遇到问题的地方。
非常感谢在这种情况下更有效地利用内存的任何帮助。