如何在 for 循环中使用 IDL 的 min() 函数的 min_subscript 参数?

How to use IDL's min() function's min_subscript argument in for loop?

我有 python 的经验,但对 IDL 不熟悉。我正在尝试编写一个将 return 两个垃圾箱的函数。我想使用 min 函数来获取我的 bin 边缘。我的问题是我试图使用 min_subscript 参数来表示每个 bin 边缘,但我不知道如何在 for 循环中执行此操作。我想编写我的代码,以便每个循环都有 2 个不同的 min_subscript 变量(bin 的两个边缘),并将这些变量写入它们自己的数组。这是我的代码:

FUNCTION DBIN, radius, data, wbin, radbin, databin
    FOR i = 0, N_ELEMENTS(radius)-1 DO BEGIN
        l = lonarr(N_ELEMENTS(radius))
        m = lonarr(N_ELEMENTS(radius))
        junk1 = min(abs(radius - radius[i]), l[i])
        junk2 = min(abs(radius - (radius[i] + wbin)), m[i])
        radbin = lonarr(N_ELEMENTS(radius))
        radbin[i] = radius[l[i]:m[i]]
        databin = lonarr(N_ELEMENTS(data))
        databin[i] = total(data[l[i]:m[i]])
    ENDFOR

END

wbin 是所需的 bin 宽度。垃圾变量的存在只是为了在这些位置获取 min_subscripts。 min_subscript 是 l[i] 和 m[i]。

感谢任何帮助!!

min_subscript 参数正试图将值 返回 传递给您,因此您必须将 "named variable" 传递给它。命名变量具有按引用传递行为。所以你必须分两步完成,比如:

junk1 = min(abs(radius - radius[i]), li)
l[i] = li

上面,li是一个命名变量,所以它可以接收和传回值。然后你可以把它放在你的存储阵列中。