Thanks. Fortunately (or unfortunately) i have to use julia, and will have to make noise where something is confusing.
On Monday, November 17, 2014 1:26:09 PM UTC-5, Tim Holy wrote: > > Your best bet, then, is to decide as quickly as possible whether you want > to > use Julia. If you start reading here: > > http://docs.julialang.org/en/latest/manual/faq/#what-does-type-stable-mean > > you'll maximize your chances of quickly discovering other things that will > likely annoy you :-). While only the section I directly linked to is > necessary > to understand why `ones(n,1)` can't return a Vector, you should also be > sure > to read the next 2 sections on DomainErrors and machine arithmetic, just > to > make sure you've drunk the full cup's worth of annoyance. > > Then you'll be in a good position to make an informed judgment about > whether > you want to accept the hassles in exchange for the benefits the type > system > provides. > > Best, > --Tim > > On Monday, November 17, 2014 10:02:07 AM Eka Palamadai wrote: > > I don't know what matlab does. > > > > As a user, ones(n,1) and ones(n) both return me a vector, and it is > > confusing to find that ones(n,1) != ones(n). > > > > On Monday, November 17, 2014 12:53:25 PM UTC-5, Tim Holy wrote: > > > What's intuitive is very dependent upon your background. If you're > coming > > > from > > > Matlab, for example, "everything is a matrix" and Matlab does this > > > extraordinarily-confusing thing: > > > > > > ones(3,3,3) gives me a 3d array; > > > ones(3,3) gives me a 2d array; > > > but > > > > > > >> ones(3) > > > > > > ans = > > > > > > 1 1 1 > > > 1 1 1 > > > 1 1 1 > > > > > > Why the heck did it give me a 2d matrix when I asked for a > 1-dimensional > > > vector of 1s? > > > > > > Julia is much more consistent: the dimensionality of the created > object is > > > equal to the number of indices you supply. If you ask for something > that's > > > 3x1, that's the size you'll get out; perforce, that is a 2d array. > > > > > > --Tim > > > > > > On Monday, November 17, 2014 09:41:10 AM Eka Palamadai wrote: > > > > "which I think is reasonable" is a subjective argument. > > > > It would be helpful if the type system is intuitive and > non-confusing to > > > > programmers. > > > > > > > > On Monday, November 17, 2014 12:24:58 PM UTC-5, Andreas Noack wrote: > > > > > Semantically, ones(n,1) creates a vector and not a matrix. > > > > > > > > > > I'd rather say that in MATLAB ones(n,1) creates a vector. > > > > > > > > > > This has been discussed many times on the list and in issues. In > > > > > particular, see the famous > > > > > > https://github.com/JuliaLang/julia/issues/4774 > > > > > > > > . > > > > > > > > > > In Julia, Vector{T} and Matrix{T} are aliases for Array{T,1} and > > > > > Array{T,2} which I think is reasonable. The questions are to what > > > > > > extend a > > > > > > > > nx1 Matrix should work similarly to a Vector and a Vector should > work > > > > > similarly to a nx1 Matrix. That is the discussion in the issue > > > > > > mentioned, > > > > > > > > and it is actually more subtle than one would expect. > > > > > > > > > > 2014-11-17 12:04 GMT-05:00 Eka Palamadai <[email protected] > > > > > > <javascript:>> > > > > > > > >> Semantically, ones(n,1) creates a vector and not a matrix. > > > > >> Why is ones(n,1) different from ones(n)? > > > > >> The type system is very confusing and non-intuitive. > > > > >> > > > > >> On Sunday, November 16, 2014 7:28:28 PM UTC-5, Andreas Noack > wrote: > > > > >>> The input should be two Vectors, but your first argument is a > Matrix > > > > >>> > > > > >>> 2014-11-16 19:25 GMT-05:00 Eka Palamadai <[email protected]>: > > > > >>>> SymTridiagonal does not seem to work properly. > > > > >>>> > > > > >>>> For e.g, the following snippet fails. > > > > >>>> > > > > >>>> julia> n=10 ; > > > > >>>> A=SymTridiagonal(2*ones(n,1), -1*ones(n-1)); > > > > >>>> ERROR: `convert` has no method matching > > > > >>>> convert(::Type{SymTridiagonal{T}}, > > > > >>>> > > > > >>>> ::Array{Float64,2}, ::Array{Float64,1}) > > > > >>>> > > > > >>>> in call at base.jl:34 > > > > >>>> > > > > >>>> Any thoughts? > >
