0

IDL プログラムで大量のデータ バッチを実行しようとしていますが、無意味な結果が得られます。

入力を分割し、各部分を個別にプログラムに渡してから、出力をつなぎ合わせると、正常に動作します。これにより、コードのどこかでオーバーフローの問題が発生していると考えるようになりましたが、これまでデバッグできませんでした。

次のような変数を宣言すると、IDL のデフォルトのデータ型サイズを変更できる方法はありますか?

A = functionCall(blah,blah2)

変数を16ビット(デフォルト)ではなく32ビット値として開始しますか?

私はあなたがこれを手動で行うことができることを知っています

A = long(functionCall(blah,blah2))

私のコードでは数千行の長さであり、変数ごとにこれを手動で変更したくありません。

4

1 に答える 1

2

デフォルトで 32 ビット整数を使用したいだけの場合は、コードに compile_opt ステートメントを入れることができます。置く

compile_opt defint32

あなたのルーチンの一番上に。または、

compile_opt idl2

これは、defint32 および strictarr の省略形です (インデックス付けに角括弧の使用を強制します)。これにより、IDL は、通常は 16 ビット整数を使用するすべての場所で 32 ビット整数を使用するようになります。

ただし、これが「大規模データ」の問題にどのように対処するかはわかりません。あなたは使いたいかもしれません

help, /mem

メモリ使用量を確認します。

于 2014-03-25T23:59:54.027 に答える