这是我的代码(x是排序数组):
lookup_value = 310.0
x = [298.0, 303.0, 308.0, 313.0, 323.0]
if (issorted(x))
idx = searchsorted(x, lookup_value)
end
Run Code Online (Sandbox Code Playgroud)
在这种特殊情况下, idx 的值为:
4:3
Run Code Online (Sandbox Code Playgroud)
在这里,我想提取“4”(超过查找值的第一个元素)或“3”(不超过查找值的最后一个元素)。但是,我无法通过将范围转换为数组来做到这一点,因为我从以下命令中得到的只是一个空数组:
julia> collect(idx)
0-element Array{Int64,1}
Run Code Online (Sandbox Code Playgroud)
请注意,310.0 的查找值只是一个示例;这个变量可以采用不同的值。
我刚刚意识到可以使用idx.start和idx.stop访问范围的开始和结束。
julia> idx
4:3
julia> idx.start
4
julia> idx.stop
3
Run Code Online (Sandbox Code Playgroud)
超过查找值的第一个元素是x[idx.start]。不超过查找值的最后一个元素是x[idx.stop]。