1

Matlab で整数の非常に大きな行列 (40.000.000x10 としましょう) を宣言する効果的な方法はありますか? 私がこのようにすると:

var=uint8(zeros(40000000,10));

コマンドウィンドウで非常にうまく機能します。しかし、同じコードの機能ははるかに悪くなります。関数のどこかでこれを行うと、まず double の 40.000.000x10 行列が作成され、次にそれが 8 ビット整数行列に変換されます。コマンドウィンドウのように、最初から整数行列として作成された方がいいと思います。さらに大きな行列で作業する必要があり、そのような double の行列を初期化するときに RAM が不足しました (ただし、行列を整数として初期化した場合は十分なメモリがあります)。ここでは double は必要ありません。すべての数値の範囲は 0:100 です。問題を理解していただければ幸いです:D

4

3 に答える 3

0

少しトリッキーになり、時間を少し節約したい場合は、次のuint8方法でゼロの配列を割り当てることができます。

var(40000000,10) = uint8(0);

このタイプの事前割り当ての詳細については、こちらを参照してください。このスキームには注意してください。1 つのサイズとして割り当てvarてから、この方法を使用してより小さなサイズの配列としてクリアせずに再度割り当てた場合、サイズは実際には変更されず、データはゼロ化されません。基本的に、このスキームは、配列 (varここ) がまだ存在しない場合にのみ有効です。

于 2013-06-18T23:11:03.440 に答える