【问题标题】:IDL program returns erronius results if input is too big如果输入太大,IDL 程序会返回错误结果
【发布时间】:2014-03-26 14:52:56
【问题描述】:

我试图通过我的 IDL 程序运行大量数据,但是当我这样做时,我得到了无意义的结果。

如果我拆分输入,然后将每个部分分别提供给程序,然后将输出拼接在一起,它就可以正常工作。这导致认为代码中某处发生了溢出问题,但到目前为止我还没有调试它。

有没有一种方法可以更改 IDL 中的默认数据类型大小,这样如果我声明一个变量,例如...

A = functionCall(blah,blah2)

它会将变量初始化为 32 位值而不是 16 位(这是默认值)?

我知道您可以通过以下方式手动执行此操作

A = long(functionCall(blah,blah2))

我的代码有几千行,我宁愿不为每个变量手动更改它。

【问题讨论】:

  • 那么您是否有内存问题或integerlong integer 变量之间的差异?如果是后者,那么只需在相关位置的代码中添加以下内容:*1L。这会将事物转换为长整数。此外,IDL 默认为 64 位,除非您运行的版本早于 6.0。

标签: idl-programming-language


【解决方案1】:

如果您只想默认使用 32 位整数,您可以在代码中添加 compile_opt 语句。放

compile_opt defint32

在你的日常工作的顶部。或者,

compile_opt idl2

这是 defint32 和 strictarr 的简写(强制使用方括号进行索引)。这将使 IDL 在通常使用 16 位整数的任何地方都使用 32 位整数。

但是,我不确定这如何解决您的“大数据”问题。您可能想使用

help, /mem

检查您的内存使用情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多