Hi Andreas, I understand, though from your email it is as if this was an unintended behaviour.
It is still very error-prone. In such cases Matlab returns 6, which is wrong from a matrix viewpoint, but probably closer to what people typically expect. Numpy has the same behavior. The latter is very well explained here http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.norm.html The Matrix vs Vector strictness in norm() right now is interesting, though there is a trade-off between what users generally expect of 1xN arrays and what they technically are. Another option is to add a vecnorm() function, explicitly to treat the argument as a vector, which would be undefined for other matrix sizes. Cheers. ------------------------------------------ Carlos On Tue, Mar 4, 2014 at 9:48 AM, Andreas Noack Jensen < andreasnoackjen...@gmail.com> wrote: > In master Julia the result is 3. I must have changed that when I > reorganised the norm code. I think that 3 is the right answer anyway. In > Julia [1 2 3] is a 1x3 matrix, i.e. not a vector. If you want it to behave > as a vector, make it a vector. This causes some confusion when coming from > MATLAB, but it is only in the transition until you get used to `Vector`s. I > also think that having matrix and vector norm in the same function is the > natural solution in Julia where so much is about dispatch. > > > 2014-03-04 1:45 GMT+01:00 Miguel Bazdresch <eorli...@gmail.com>: > > In Julia 0.2.1, I get 6.0. >> >> -- mb >> >> >> On Mon, Mar 3, 2014 at 7:22 PM, Carlos Becker <carlosbec...@gmail.com>wrote: >> >>> My mistake there, I meant the L1 norm, re-typed: >>> >>> ----------------------------- >>> X= [[1 2 3],[4 5 6]] >>> >>> # now, X[1,:] is 1x3 array, containing 1 2 3 >>> >>> # but let's peek at its L1-norm: >>> norm( X[1,:], 1 ) # --> we get 3, where I would expect 6 (1+2+3) >>> ----------------------------- >>> >>> can you try that on v0.2? I am on 0.3 from upstream. >>> >>> >>> ------------------------------------------ >>> Carlos >>> >>> >>> On Tue, Mar 4, 2014 at 1:19 AM, Patrick O'Leary < >>> patrick.ole...@gmail.com> wrote: >>> >>>> This is odd, as I get norm() working just fine with any of a row, >>>> column, or vector, and all getting exactly the same result of 3.741... >>>> (v0.2.0, on julia.forio.com, since it's quick for me to get to). Note >>>> that it will return the L2 norm by default, exactly as MATLAB does. >>>> Supplying a second argument with p in it (norm([1 2 3], 1)) will return the >>>> p-norm, exactly like MATLAB. >>>> >>>> >>>> On Monday, March 3, 2014 6:12:53 PM UTC-6, Carlos Becker wrote: >>>>> >>>>> Hello all, >>>>> >>>>> today I fought for an hour with a very simple piece of code, of the >>>>> kind: >>>>> >>>>> ----------------------------- >>>>> X= [[1 2 3],[4 5 6]] >>>>> >>>>> # now, X[1,:] is 1x3 array, containing 1 2 3 >>>>> >>>>> # but let's peek at its L1-norm: >>>>> norm( X[1,:] ) # --> we get 3, where I would expect 6 (1+2+3) >>>>> ----------------------------- >>>>> >>>>> I believe this comes back to the 'how 1xN matrices should be handled'. >>>>> The point is that the current behaviour is totally non-intuitive for >>>>> someone coming from Matlab, >>>>> and having matrix and vector norms in the same function hides this (in >>>>> this case) unwanted behavior. >>>>> >>>>> I am not sure what is the right way to deal with this, but seems like >>>>> a hard wall that more than one >>>>> will hit when coming from matlab-like backgrounds. >>>>> >>>>> Cheers. >>>>> >>>> >>> >> > > > -- > Med venlig hilsen > > Andreas Noack Jensen >