2014-03-25 48 views
0

我試圖通過IDL程序運行大量數據,但是當我這樣做時我會得到無意義的結果。如果輸入過大,IDL程序會返回erronius結果

如果我分開輸入,然後分別給每個程序到程序,然後將輸出拼接在一起,它工作正常。這導致認爲代碼中某處出現了溢出問題,但迄今爲止我還沒有任何運氣調試它。

有沒有一種方法,我可以在IDL更改默認的數據類型,大小,這樣,如果我聲明一個變量,如...

A = functionCall(blah,blah2) 

將啓動變量作爲32位值,而不是16位(這是默認)?

我知道你可以通過我的代碼做

A = long(functionCall(blah,blah2)) 

手工做,這是一個幾千線長,我寧願不經歷和手動更改此爲每個變量。

+0

那麼你有一個內存問題或「整數」和「長整型」變量之間的差異?如果是後者,則只需在相關位置添加以下代碼:'* 1L'。這會將事物轉換爲長整數。此外,默認情況下IDL是64位,除非您運行6.0以前的版本。 –

回答

2

如果您只想默認爲32位整數,則可以在您的代碼中放入compile_opt語句。把

compile_opt defint32 

在你的例程的頂部。或者,

compile_opt idl2 

這是defint32和strictarr的縮寫(強制使用方括號進行索引)。這將使IDL在通常使用16位整數的任何地方都使用32位整數。

但是,我不確定這是如何解決您的「大數據」問題。您可能想要使用

help, /mem 

檢查您的內存使用情況。