问题标签 [idl-programming-language]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
515 浏览

matlab - IDL 等效于 MATLAB 函数 accumarray()

我接到了将一段 MATLAB 代码翻译成 IDL 的任务,当我遇到 MATLAB 函数 accumarry() 时遇到了障碍。此处描述的函数 用于根据另一个数组中给出的索引对一个数组中的元素求和。示例 1 可能比页面顶部的实际功能描述更好地解释了这一点。在尝试在 IDL 中重现示例 1 时,我无法避免 for 循环,但我相信这是可能的。我最好的尝试如下:

任何有关改进这一点的建议将不胜感激!我希望 IDL 有一个类似的内置功能,但一直没能找到。也许直方图分箱有一些魔力?

0 投票
3 回答
2712 浏览

if-statement - IDL 检查数组中是否有数字

我对 IDL 很陌生。

实际上,我想要做的是有一个 if 语句来检查当前索引 I 是否在数组中。

在 Python 中,它看起来像下面这样:

我知道你可以在 IDL 中嵌套 if:

我只是不知道是否有 in 运算符或理智的方式来执行此操作。

干杯

0 投票
1 回答
187 浏览

pointers - 指向 IDL 结构中的结构的指针

我定义了以下结构:

Points 是一个数组,因为点的大小不同,我知道它需要是一个指针。

稍后我创建一个新变量:

然后我填充这些值。

然后我尝试通过执行以下操作将点数组分配给循环:

但是这条线给了我错误:

有没有人有什么建议?

0 投票
2 回答
139 浏览

math - 比较IDL中不同长度实体的相似度

好的,所以我有一个对象数组。每个对象都有一个以像素为单位的 x 和 y 坐标向量。

我需要有效地通过并将它们相互比较并说它们是相同的。(它们分布在多个时间范围内,因此存在长度差异,并且每个点可能存在几个像素差异)

到目前为止,我所做的一切正常的工作是有效地在当前循环周围绘制一个框,然后比较未来的时间框架。获取具有该相对位置的对象。(侧面有一些多余的部分以考虑运动)

然后我计算两个对象之间的欧几里得距离。这对某些人来说还可以,但会丢失帧,并且偶尔会出现虚假结果。

为了解决这个问题,我计算了坐标的互相关,然后在计算欧几里得时将其用作较长数组的偏移量。

然而,这似乎并不像我希望的那样有效,并且通过研究我了解到欧几里得可能不是最好的方法。

理想情况下,我想要两者之间的相似度评级,并且能够说“是的,稍后这是同一个对象”

人们有什么建议?

0 投票
2 回答
711 浏览

colors - 在 IDL 中绘制颜色

我无法在 IDL 中绘制不同的颜色。如果我执行以下操作:

无论我为 n 赋予什么价值,我只能得到不同深浅的红色。如何绘制其他颜色?

0 投票
0 回答
387 浏览

c - 旋转算法未产生预期结果

我正在尝试将一些代码从 IDL 移植到 C,但我发现自己不得不复制 ROT 函数。目标是将 1024x1024 的无符号短裤阵列旋转一个角度(以度为单位)。就本项目而言,角度非常小,小于 1 度。该函数使用双线性插值。

我尝试了一种向后的方法。对于输出数组中的每个像素,我进行了反向旋转以确定它属于输入数组中的哪个坐标,然后使用插值来确定该值是什么。如果输入网格倾斜,我不确定如何进行双线性插值;我见过的每个例子都假设它是正交的。

对于轮换,我提到了这一点:

来自:C/C++ 中的图像缩放和旋转

对于插值,我提到了这个:http ://en.wikipedia.org/wiki/Bilinear_interpolation

无论如何,这是我的代码:

我通过打印几十个数字来测试它,并将其与 IDL 代码的相同 ind 进行比较,结果完全不一样。我不确定我可以提供哪些更多信息,因为我目前无法生成阵列的工作图像。您在我的实施中看到任何错误吗?我的算法背后的推理是否合理?

编辑:这是从输入数组中选择的一些数字;它们在 C 和 IDL 程序中是相同的。打印的是 x 索引,然后是 y 索引,然后是该点的值。

这是 IDL 程序在旋转后输出的内容:

这是使用我的函数旋转后的数据:

我没有看到这里出现的立即有用的模式来指示正在发生的事情,这就是我最初没有包含它的原因。

编辑 编辑 编辑:我相信我的脑海里突然发现了这个问题!我注意到 0,0 像素似乎从未改变,而 1023,1023 像素变化最大。当然,这意味着算法被设计为围绕原点旋转,而我假设我试图模仿的函数被设计为围绕图像的中心旋转。答案仍然不一样,但更接近了。我所做的只是改变线路

0 投票
1 回答
68 浏览

r - 写入 .dat 的 fltarr 的格式是什么

我并没有真正使用 IDL,但我使用的是用 IDL 编写的模型。我有一些预先建立的脚本,可以将输出从 .dat 提取到 .tif,但现在我想看看一些中间文件。基本上代码如下:

file.dat 的格式是什么?扁平二进制,小端?我不太了解模型中的所有语法,但 var_cube 将是一个 3-d 数组,其中 ncols,nrows 是空间域,第 3 个 D 是时间片。我想在任何其他程序中打开这些文件,例如 R 来查看光栅切片。

0 投票
1 回答
1314 浏览

c++ - 将参数传递给 C++ 时,IDL CALL_EXTERNAL 崩溃

我正在尝试使用 CALL_EXTERNAL 函数从 IDL 运行 c++ 脚本。我已经能够让它在没有参数的情况下工作,但是当我尝试添加一个 arg 时,例如单个 IDL LONG INT,IDL 崩溃。出现错误:

我正在使用的测试代码如下。

C++ 代码:

IDL 代码:

这段代码当然是练习代码,但如果我不能让它工作,那么我就无法传递数组和值的混合。

我知道 IDL 通过引用传递所有内容,除非另有说明。因此,我尝试将传递的参数视为 C++ 代码中的指针,并设置 /ALL_VALUE 关键字以将 arg 作为值传递。两者都不起作用,导致与上述相同的错误。我读过“胶水函数”,但我一直找不到制作它们的指南(尽管每个来源都表明它“对大多数程序员来说很容易””>。>

无论如何,我的选择如下,如果你能帮助我,我将永远感激:

  1. 让这个 CALL_EXTERNAL 函数工作
  2. 让 C 代码以某种方式从内存中获取所需的数据
  3. 用 C++ 重写所有东西(你不需要帮助这个)

提前致谢。

0 投票
1 回答
161 浏览

idl-programming-language - 从字符串数组调用readcol中的向量?

我想使用生成向量名称并将它们放入字符串数组中,然后我需要使用 readcol 命令调用这些向量标题。这基本上是我想要的:

vectorname1/vectorname2 是字符串数组,其中包含每个向量的所需名称电子表格是我要加载的所有电子表格的文件名的字符串数组

对于 I = 0,n 开始

readcol,电子表格[I],vectorname1[I],vectorname2[I],格式='x,d,x,x,d'

结束

绘图,vectorname1_1,vectorname2_1

我曾尝试使用执行命令(即 execute('readcol,' + spreadsheets[I] + ',' + vectorname1[I] + ',' ...) 但 IDL 在遇到附加引号时返回错误格式关键字。

有任何想法吗?

0 投票
1 回答
283 浏览

idl-programming-language - 在 Windows 中从命令行调用 IDL 例程并阻止(或忽略)弹出对话框

我编写了一个简短的脚本(用另一种语言,恰好是 Python),它将参数传递给命令行,如下所示 -

其中 p, o 分别是位置参​​数和可选参数(很明显)。言归正传,这个脚本会多次调用 IDL 例程。每次加载 IDL 虚拟机时,IDL 例程都会运行直到完成、冲洗并重复。

不幸的是,如果在 IDL 例程执行中发生错误,则会弹出一个对话框并暂停程序执行,直到手动单击为止。由于想法是将其作为批处理运行,因此我想忽略对话框(接受错误)并继续下一次运行。关于我可以运行 IDL 以防止弹出窗口的首选项或可选命令的任何想法?提前致谢。