Le vendredi 20 novembre 2015 à 04:54 -0800, Michele Zaffalon a écrit :
> Should `linspace` act as an array for `repeat`?
Yes, the signature of repeat() is clearly too strict. This has been
discussed at
https://github.com/JuliaLang/julia/issues/12953

There was a clear support for this, but a decision would have to be
taken regarding whether to use positional arguments instead of keyword
arguments.


Regards

> On Wednesday, October 21, 2015 at 10:00:46 PM UTC+2, Art Kuo wrote:
> > I don't think there is much to argue about, except perhaps names. 
> > `linspace` returns a range, but is otherwise a drop-in replacement
> > for an array, and should act as one for any naive user, other than
> > sometimes being faster and taking less memory. This is not hidden
> > from the user, yet they need not be concerned about it. It just
> > works. (The array might be better in some cases, I suspect rarely.)
> > One might expect a `linspace` to show an array when typed into the
> > REPL. With #13615, post-0.4 the user will see that it is a range
> > and also "what they expect."
> > It is true that `logspace` is an array and `linspace` is a range,
> > and this is ugly. Perhaps there should be a `logrange` to go with
> > `linrange`, or `logspace` should be modified to be a range. I do
> > agree with these complaints.
> > The name `logspace` probably comes from Matlab, but otherwise has
> > no significance and is not a great name. Perhaps it's worth keeping
> > around for that reason; perhaps it should be stashed into a Matlab
> > module.
> > As much as I was attracted here by the Matlab-alikeness, that can
> > be a detriment. For example, Matlab overloads `diag` so you get two
> > very different things for two different inputs. Whereas Mathematica
> > has long, clear names, and `DiagonalMatrix` and `Diagonal` give a
> > better clue what will happen. And as much as I love `eye`,
> > `IdentityMatrix` is clearer. Other Matlab-isms:  `tril`, `pcg`,
> > `alim`, `shg`.
> > 
> > 
> > On Wednesday, October 21, 2015 at 3:16:58 PM UTC-4, Stefan
> > Karpinski wrote:
> > > This thread is tragically long on opinions and short on arguments
> > > backing them up. It occurs to me that we can write specialized
> > > methods for collect(::LinSpace) that generate the collected
> > > version more efficiently than generic iteration does, which
> > > eliminates one of the potential arguments for just generating an
> > > array.
> > > 
> > > On Wednesday, October 21, 2015, Gabriel Gellner <
> > > gabriel...@gmail.com> wrote:
> > > > I agree with this downvote so much it hurts. The
> > > > logspace/linspace is painfully ugly. linrange is the right name
> > > > in my find for the iterator version.
> > > > 
> > > > On Wednesday, 30 September 2015 10:31:55 UTC-7, Alex Ames
> > > > wrote:
> > > > > Another downvote on linspace returning a range object. It
> > > > > seems odd for linspace and logspace to return different
> > > > > types, and linrange provides the low-memory option where
> > > > > needed. Numpy's `linspace` also returns an array object.
> > > > >  I ran into errors when trying to plot a function over a
> > > > > linspace of x values, since plotting libs currently expect
> > > > > vectors as arguments, not range objects. Easily fixed if you
> > > > > know Julia well, but Matlab/Python converts may be stymied.
> > > > > 
> > > > > On Wednesday, September 30, 2015 at 12:19:22 PM UTC-5, J Luis
> > > > > wrote:
> > > > > > I want to add my voice to the dislikers. Those are the type
> > > > > > of surprises that are not welcome mainly for matlab users. 
> > > > > > 
> > > > > > quarta-feira, 30 de Setembro de 2015 às 16:53:57 UTC+1,
> > > > > > Christoph Ortner escreveu:
> > > > > > > I also strongly dislike the `linspace` change; I like the
> > > > > > > idea though of having `linspace` and `linrange`, where
> > > > > > > the former should give the array.
> > > > > > > Christoph
> > > > > > > 
> > > > > > > 
> > > > > > > On Wednesday, 30 September 2015 10:21:36 UTC+1, Michele
> > > > > > > Zaffalon wrote:
> > > > > > > > I just realize that the thread is about 0.3.11 and I am
> > > > > > > > showing output for 0.4.0-rc2. Sorry for the noise.
> > > > > > > > 
> > > > > > > > On Wed, Sep 30, 2015 at 11:17 AM, Michele Zaffalon <
> > > > > > > > michele....@gmail.com> wrote:
> > > > > > > > > 
> > > > > > > > > On Wed, Sep 30, 2015 at 9:50 AM, Milan Bouchet-Valat
> > > > > > > > > <nali...@club.fr> wrote:
> > > > > > > > > > Le mercredi 30 septembre 2015 à 08:55 +0200,
> > > > > > > > > > Michele Zaffalon a écrit :
> > > > > > > > > > > Just curious: linspace returns a Range object,
> > > > > > > > > > but logspace returns a
> > > > > > > > > > > vector because there is no much use case for a
> > > > > > > > > > LogRange object?
> > > > > > > > > > >
> > > > > > > > > > > @feza: I have also seen the deprecation warning
> > > > > > > > > > going away after a
> > > > > > > > > > > couple of calls, but I am not sure why. If you
> > > > > > > > > > restart Julia, the
> > > > > > > > > > > deprecations reappear.
> > > > > > > > > > Deprecation warnings are only printed once for each
> > > > > > > > > > call place. The
> > > > > > > > > > idea is that once you're aware of it, there's no
> > > > > > > > > > point in nagging you.
> > > > > > > > > > 
> > > > > > > > > > Anyway, that warning is most probably not related
> > > > > > > > > > to linspace at all,
> > > > > > > > > > but rather to the array concatenation syntax
> > > > > > > > > > resulting in an effect
> > > > > > > > > > equivalent to collect(). If you show us a piece of
> > > > > > > > > > code that prints the
> > > > > > > > > > warning, we can give you more details.
> > > > > > > > > > 
> > > > > > > > > > 
> > > > > > > > > > Regards
> > > > > > > > > Sorry, you are right, I was referring to the
> > > > > > > > > concatenation.
> > > > > > > > > It prints it exaclty twice if I type it in the REPL,
> > > > > > > > > it always prints it if I define it within a function
> > > > > > > > > e.g. a() = [1:3].
> > > > > > > > > 
> > > > > > > > > C:\Users\michele.zaffalon>julia
> > > > > > > > >                _
> > > > > > > > >    _       _ _(_)_     |  A fresh approach to
> > > > > > > > > technical computing
> > > > > > > > >   (_)     | (_) (_)    |  Documentation: 
> > > > > > > > > http://docs.julialang.org
> > > > > > > > >    _ _   _| |_  __ _   |  Type "?help" for help.
> > > > > > > > >   | | | | | | |/ _` |  |
> > > > > > > > >   | | |_| | | | (_| |  |  Version 0.4.0-rc2 (2015-09
> > > > > > > > > -18 17:51 UTC)
> > > > > > > > >  _/ |\__'_|_|_|\__'_|  |  Official 
> > > > > > > > > http://julialang.org/ release
> > > > > > > > > |__/                   |  x86_64-w64-mingw32
> > > > > > > > > 
> > > > > > > > > julia> [1:3]
> > > > > > > > > WARNING: [a] concatenation is deprecated; use
> > > > > > > > > collect(a) instead
> > > > > > > > >  in depwarn at deprecated.jl:73
> > > > > > > > >  in oldstyle_vcat_warning at abstractarray.jl:29
> > > > > > > > >  in vect at abstractarray.jl:32
> > > > > > > > > while loading no file, in expression starting on line
> > > > > > > > > 0
> > > > > > > > > 3-element Array{Int64,1}:
> > > > > > > > >  1
> > > > > > > > >  2
> > > > > > > > >  3
> > > > > > > > > 
> > > > > > > > > julia> [1:3]
> > > > > > > > > WARNING: [a] concatenation is deprecated; use
> > > > > > > > > collect(a) instead
> > > > > > > > >  in depwarn at deprecated.jl:73
> > > > > > > > >  in oldstyle_vcat_warning at abstractarray.jl:29
> > > > > > > > >  in vect at abstractarray.jl:32
> > > > > > > > > while loading no file, in expression starting on line
> > > > > > > > > 0
> > > > > > > > > 3-element Array{Int64,1}:
> > > > > > > > >  1
> > > > > > > > >  2
> > > > > > > > >  3
> > > > > > > > > 
> > > > > > > > > julia> [1:3]
> > > > > > > > > 3-element Array{Int64,1}:
> > > > > > > > >  1
> > > > > > > > >  2
> > > > > > > > >  3
> > > > > > > > > 
> > > > > > > > > julia> a() = [1:3]
> > > > > > > > > a (generic function with 1 method)
> > > > > > > > > 
> > > > > > > > > julia> a()
> > > > > > > > > WARNING: [a] concatenation is deprecated; use
> > > > > > > > > collect(a) instead
> > > > > > > > >  in depwarn at deprecated.jl:73
> > > > > > > > >  in oldstyle_vcat_warning at abstractarray.jl:29
> > > > > > > > >  in a at none:1
> > > > > > > > > while loading no file, in expression starting on line
> > > > > > > > > 0
> > > > > > > > > 3-element Array{Int64,1}:
> > > > > > > > >  1
> > > > > > > > >  2
> > > > > > > > >  3
> > > > > > > > > 
> > > > > > > > > julia> a()
> > > > > > > > > WARNING: [a] concatenation is deprecated; use
> > > > > > > > > collect(a) instead
> > > > > > > > >  in depwarn at deprecated.jl:73
> > > > > > > > >  in oldstyle_vcat_warning at abstractarray.jl:29
> > > > > > > > >  in a at none:1
> > > > > > > > > while loading no file, in expression starting on line
> > > > > > > > > 0
> > > > > > > > > 3-element Array{Int64,1}:
> > > > > > > > >  1
> > > > > > > > >  2
> > > > > > > > >  3
> > > > > > > > > 
> > > > > > > > > julia> a()
> > > > > > > > > WARNING: [a] concatenation is deprecated; use
> > > > > > > > > collect(a) instead
> > > > > > > > >  in depwarn at deprecated.jl:73
> > > > > > > > >  in oldstyle_vcat_warning at abstractarray.jl:29
> > > > > > > > >  in a at none:1
> > > > > > > > > while loading no file, in expression starting on line
> > > > > > > > > 0
> > > > > > > > > 3-element Array{Int64,1}:
> > > > > > > > >  1
> > > > > > > > >  2
> > > > > > > > >  3
> > > > > > > > >  
> > > > > > > > > > 
> > > > > > > > > > > On Wed, Sep 30, 2015 at 5:40 AM, feza <
> > > > > > > > > > moham...@gmail.com> wrote:
> > > > > > > > > > > > Strange it *was* giving me an error saying
> > > > > > > > > > deprecated and that I
> > > > > > > > > > > > should use collect, but now it's fine.
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > On Tuesday, September 29, 2015 at 10:28:12 PM
> > > > > > > > > > UTC-4, Sheehan Olver
> > > > > > > > > > > > wrote:
> > > > > > > > > > > > > fez, I'm pretty sure the code works fine
> > > > > > > > > > without the collect:
> > > > > > > > > > > > > when exp is called on linspace it converts it
> > > > > > > > > > to a vector.
> > > > > > > > > > > > > Though the returned t will be linspace
> > > > > > > > > > object.
> > > > > > > > > > > > >
> > > > > > > > > > > > > On Wednesday, September 30, 2015 at 12:10:55
> > > > > > > > > > PM UTC+10, feza
> > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > Here's the code I was using where I needed
> > > > > > > > > > to use collect (I've
> > > > > > > > > > > > > > been playing around with Julia, so any
> > > > > > > > > > suggestions on this code
> > > > > > > > > > > > > > for perf is welcome ;) ) . In general
> > > > > > > > > > linspace (or the :
> > > > > > > > > > > > > > notation)  is also used commonly to lay  a
> > > > > > > > > > grid in space for
> > > > > > > > > > > > > > solving a PDE for some other use cases.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > function gp(n)
> > > > > > > > > > > > > >         n = convert(Int,n)
> > > > > > > > > > > > > >         t0 = 0
> > > > > > > > > > > > > >         tf = 5
> > > > > > > > > > > > > >         t = collect( linspace(t0, tf, n+1)
> > > > > > > > > > )
> > > > > > > > > > > > > >         sigma = exp( -(t - t[1]) )
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >         c = [sigma; sigma[(end-1):-1:2]]
> > > > > > > > > > > > > >         lambda = fft(c)
> > > > > > > > > > > > > >         eta = sqrt(lambda./(2*n))
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >         Z = randn(2*n) + im*randn(2*n)
> > > > > > > > > > > > > >         x = real( fft( Z.*eta ) )
> > > > > > > > > > > > > >         return (x, t)
> > > > > > > > > > > > > > end
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > On Tuesday, September 29, 2015 at 8:59:52
> > > > > > > > > > PM UTC-4, Stefan
> > > > > > > > > > > > > > Karpinski wrote:
> > > > > > > > > > > > > > > I'm curious why you need a vector rather
> > > > > > > > > > than an object. Do
> > > > > > > > > > > > > > > you mutate it after creating it? Having
> > > > > > > > > > linspace return an
> > > > > > > > > > > > > > > object instead of a vector was a bit of a
> > > > > > > > > > unclear judgement
> > > > > > > > > > > > > > >  call so getting feedback would be good.
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > On Tuesday, September 29, 2015, Patrick
> > > > > > > > > > Kofod Mogensen <
> > > > > > > > > > > > > > > patrick....@gmail.com> wrote:
> > > > > > > > > > > > > > > > No:
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > julia> logspace(0,3,5)
> > > > > > > > > > > > > > > > 5-element Array{Float64,1}:
> > > > > > > > > > > > > > > >     1.0
> > > > > > > > > > > > > > > >     5.62341
> > > > > > > > > > > > > > > >    31.6228
> > > > > > > > > > > > > > > >   177.828
> > > > > > > > > > > > > > > >  1000.0
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > On Tuesday, September 29, 2015 at
> > > > > > > > > > 8:50:47 PM UTC-4, Luke
> > > > > > > > > > > > > > > > Stagner wrote:
> > > > > > > > > > > > > > > > > Thats interesting. Does logspace also
> > > > > > > > > > return a range?
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > On Tuesday, September 29, 2015 at
> > > > > > > > > > 5:43:28 PM UTC-7, Chris
> > > > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > > > > > In 0.4 the linspace function
> > > > > > > > > > returns a range object,
> > > > > > > > > > > > > > > > > > and you need to use collect() to
> > > > > > > > > > expand it. I'm also
> > > > > > > > > > > > > > > > > > interested in nicer syntax.
> > > > > > > > > > 
> > > > > > > > > 
> > > > > > > > 

Reply via email to