Its the `colon` function I was looking for, ty!
On Tuesday, July 1, 2014 6:27:55 PM UTC+2, Sam L wrote:
>
> Vector{Float64} is an just array of floats in memory, and there's no way
> of knowing without checking that they're sorted in increasing or decreasing
> order and equally spaced. In order to convert from Vector{Float64} to
> FloatRange{Float64}, you'd have to assume that this is true or check. If
> you already know that should be true, you might as well use a range in the
> first place.
>
> As Mauro said, they're both AbstractArrays and can be used interchangeably
> in many cases, so there's not really any good reason to have such a
> function. It's true that ranges use less memory, but if you already have a
> vector sitting there you may as well use it, since the memory is already
> allocated.
>
> If you wanted such a function something like this might* work:
> function vec2range(v::Vector{Float64})
> issorted(v) || error("Not sorted")
> a = (v[end] - v[1])/(length(v)-1)
> for i in 2:length(v)
> isapprox(a, v[i]-v[i-1]) || error("Differences are not constant")
> end
> colon(v[1], a, v[end])
> end
>
> *Might because floats are weird <http://floating-point-gui.de/>. See #2333
> <https://github.com/JuliaLang/julia/issues/2333>, #5636
> <https://github.com/JuliaLang/julia/pull/5636>, and probably others. It
> also does not work if length(v) < 2.
>
>
> On Tuesday, July 1, 2014 8:31:21 AM UTC-7, Andrei Berceanu wrote:
>>
>> And isn't there some inverse function to []?
>> I mean, if i have a Vector{Float64} [myrange] and want to convert it into
>> a FloatRange{Float64} myrange.
>>
>>
>> On Tuesday, July 1, 2014 2:35:03 PM UTC+2, Mauro wrote:
>>>
>>> > Mauro, is that the only difference, the memory allocation? Can I use
>>> ranges
>>> > for plotting, for instance?
>>>
>>> Ranges are basically just 3 numbers: start, step & stop. Just have a
>>> look at base/range.jl
>>>
>>> On whether they can be used instead of arrays depends on the
>>> implementation of the function in question. However, generally
>>> functions are implemented in terms of AbstractArray which Range (as well
>>> as Array) is a subtype of. Just try and if it doesn't work turn it into
>>> an array with [myrange].
>>>
>>> > On Tuesday, July 1, 2014 1:33:34 PM UTC+2, Mauro wrote:
>>> >>
>>> >> > If I define an array using the syntax
>>> >> >
>>> >> > a = [start:step:end]
>>> >> >
>>> >> > how can I later recover the step? I tried step(a), but that only
>>> seems
>>> >> to
>>> >> > work for integer ranges.
>>> >>
>>> >> Why not keep the range? It should work just like an array but use
>>> less
>>> >> memory:
>>> >>
>>> >> a = start:step:end
>>> >>
>>> >> and step works for float ranges:
>>> >>
>>> >> julia> step(0.5:6.1:40)
>>> >> 6.1
>>> >>
>>>
>>>