2011-04-17 5 views
1

私は3次元の値の配列(0または1)を持っています。これは非常に大きく(約2300x2300x11)です。私は、例えばinterp3を使ってこれらの値にサーフェスを合わせたいのですが、MATLABがメモリ不足になったときに試してみます。したがって、私はMATLABがメモリにそれを収容するのに十分な大きさに配列を縮小することに決めました。MATLAB関数のメモリ要件はどこで確認できますか?

縮小された配列を小さくするほど、結果が悪くなります(表面フィッティングは高精度の測定プロセスの一部です)ので、できるだけ配列を小さくしたいです。

特定の配列サイズが必要とするメモリと使用可能なメモリの量を事前に判断し、この情報を使用してメモリの例外を回避するのに十分なサイズを変更できますか?

答えて

1

the maximum array sizes that are supported on different platformsから見ることができます。一般に、PxQxRサイズの3D配列doubleがある場合、配列のサイズはバイトでP*Q*R*8です。マトリックスのサイズは〜444 MBです。 single(A)を使用してsingleに縮小することもできます。 singleは、要素ごとに4つのバイトを使用して、あなたは2

は、私は本当にinterp3の内部の仕組みにつついていない要因によって、あなたの配列のサイズを減らすことができますが、正確なメモリ要件は、選択した補間オプションに依存します。したがって、最初にそれをsingleに変換し、それが動作するかどうか試してみることができます。そうでない場合は、行と列の数の80%(90%)を試してください。この方法で元の配列の塊が得られますが、メモリ要件は元の64%(81%)にすぎません。

これで解決できない場合は、ダフィモの提案が参考になるはずです。

2

私はこれに対する答えは分かりませんが、ケーキを食べて食べることができるかどうかは疑問です。

データセットが大きすぎる場合は、ピッタリフィットにしないでください。データポイントを省略するのではなく、チャンクで行います。

データポイントを省略する方法については、よりスマートにするか、データが急速に変化している曲率の高い場所でそれらを使用したいと考えています。面白いことは何も起こっていない、アクションから遠く離れた場所にポイントを残す。あなたは、フィットを行い、サーフェスを見て、ポイントを追加したり削除したりして再試行する必要があります。

これは繰り返しのプロセスかもしれませんが、ちょっとした運と努力で素敵なフィット感を得ることができます。

関連する問題