表示される問題は、Matlabが仮想メモリの使用を開始したときに発生します。通常、タスクマネージャーを介してMatlabプロセスを強制終了できるはずですが、それが常に望ましいとは限りません。残念ながら、最大アレイサイズをグローバルに制限する単純なMatlab内部スイッチはありません。
できることは、スワップファイルのサイズを非常に小さくして、Matlabが実際に多くを書き込めないようにすることですが、これは他のプログラムのパフォーマンスに影響を与える可能性があります。その他のMatlab以外のソリューションは、Linuxに切り替えるか(プログラムのメモリ制限をより簡単に設定できます。WindowsとLinuxの両方で制限を設定する方法の詳細については、@ BenVoigtの回答を参照してください)、またはすべてを仮想マシンで実行します。
将来の参考のために、私のシミュレーションでは、事前割り当ての最初に、シミュレーションパラメータ(の要素数)を指定して推定総メモリ使用量を計算するメソッド(サブ関数、OOPを実行したくない場合)があります。ダブルスに8倍使用するすべての大きな配列はバイト単位のメモリです)、RAMを使いすぎるとエラーが発生します。
簡単なメモリチェックの例を次に示します。3 m x 3xtの配列と5mxtの配列を割り当てる予定です。これらはすべて2倍になります。
maxMemFrac = 0.8; %# I want to use at most 80% of the available memory
numElements = 3 * (m * 3 * t) + 5 * (m * t);
numBytesNeeded = numElements * 8; %# I use double
%# read available memory
[~,memStats] = memory;
if numBytesNeeded > memStats.PhysicalMemory.Available * maxMemFrac
error('MYSIM:OUTOFMEMORY','too much memory would be needed')
end