如何在 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
是一个命名变量,所以它可以接收和传回值。然后你可以把它放在你的存储阵列中。
我有 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
是一个命名变量,所以它可以接收和传回值。然后你可以把它放在你的存储阵列中。