下面是我的代码(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在这种情况下,idx的价值是:
4:3在这里,我想提取"4“(第一个元素超过我的查找值)或"3”(不超过查找值的最后一个元素)。但是,通过将范围转换为数组,我无法做到这一点,因为我从下面的命令中得到的只有一个空数组:
julia> collect(idx)
0-element Array{Int64,1}注意,310.0的查找值只是一个例子;这个变量可以接受不同的值。
发布于 2016-04-20 09:25:16
我刚刚意识到使用idx.start和idx.stop访问范围的开始和结束是可能的。
julia> idx
4:3
julia> idx.start
4
julia> idx.stop
3超过查找值的第一个元素是x[idx.start]。执行而不是超过查找值的最后一个元素是x[idx.stop]。
发布于 2016-04-28 19:57:58
这是对公认答案的回应。我本来打算把它作为评论加进去的,但显然我不允许这样做:
您绝对不应该使用idx.start和idx.stop。Julia中的类型字段名(通常)考虑的是实现细节,而不是接口的一部分。他们可以在没有警告或反对的情况下改变。
你应该按照王凤阳的建议使用first(idx)和last(idx)。
https://stackoverflow.com/questions/36738984
复制相似问题