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

时间:2015-10-23 01:13:51

标签: loops for-loop min subscript idl-programming-language

我有python的经验,但我是IDL的新手。我正在尝试编写一个返回两个bin的函数。我想使用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_subscripts是l [i]&m;和m [i]' s。

我感谢任何帮助!!

1 个答案:

答案 0 :(得分:1)

min_subscript参数正在尝试将值传递给您,因此您必须将“命名变量”传递给它。命名变量具有传递引用行为。所以你必须分两步完成,例如:

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

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

相关问题