This does put the numbers on the diagonal, but.. (* =/~) 1 2 2 1 1 0 0 1 0 2 2 0 0 2 2 0 1 0 0 1
...I liked Roger Hui's point about using (*"1) instead. Thanks, -- Raul -- Raul On Thu, Feb 27, 2014 at 12:26 PM, Pascal Jasmin <[email protected]> wrote: > not sure if given, but even shorter, and maybe clearer (?) > > (* =/~) or (] * =/~) > > (* =/~) 9 7 5 3 > 9 0 0 0 > 0 7 0 0 > 0 0 5 0 > 0 0 0 3 > > ( =/~) 9 7 5 3 > 1 0 0 0 > 0 1 0 0 > 0 0 1 0 > 0 0 0 1 > > > > ----- Original Message ----- > From: J. Patrick Harrington <[email protected]> > To: "[email protected]" <[email protected]> > Cc: > Sent: Thursday, February 27, 2014 12:48:44 AM > Subject: Re: [Jprogramming] create matrix from diagonal > > even shorter: > > diag4=: *=@\: > > diag4 9 7 5 3 > 9 0 0 0 > 0 7 0 0 > 0 0 5 0 > 0 0 0 3 > Patrick > > On Wed, 26 Feb 2014, km wrote: >> (*"0 1 =@i.@#) 1 2 3 >> 1 0 0 >> 0 2 0 >> 0 0 3 >> >> --Kip Murray >> >> Sent from my iPad >> >>> On Feb 26, 2014, at 9:35 PM, Roger Hui <[email protected]> wrote: >>> >>> diag=: 3 : 'y (,&.>~i.#y)} 0 $~ ,~#y' >>> diag 10 20 30 40 >>> 10 0 0 0 >>> 0 20 0 0 >>> 0 0 30 0 >>> 0 0 0 40 >>> >>> diag1=: ]\ * =/~@i.@# >>> diag1 10 20 30 40 >>> 10 0 0 0 >>> 0 20 0 0 >>> 0 0 30 0 >>> 0 0 0 40 >>> >>> diag2=: -@>:@i.@# {."0 ] >>> diag2 10 20 30 40 >>> 10 0 0 0 >>> 0 20 0 0 >>> 0 0 30 0 >>> 0 0 0 40 >>> >>> diag3=: ,~@# $ ] #~ 1 j. # >>> diag3 10 20 30 40 >>> 10 0 0 0 >>> 0 20 0 0 >>> 0 0 30 0 >>> 0 0 0 40 >>> >>> >>> >>> >>> >>>> On Wed, Feb 26, 2014 at 7:12 PM, Joe Bogner <[email protected]> wrote: >>>> >>>> Sorry, I figured it out: >>>> >>>> I just needed one more 0... >>>> >>>> ] S * (4 4 $ 1 0 0 0 0) >>>> 4 0 0 0 >>>> 0 3 0 0 >>>> 0 0 2.23607 0 >>>> 0 0 0 0 >>>> >>>>> On Wed, Feb 26, 2014 at 10:02 PM, Joe Bogner <[email protected]> wrote: >>>>> I'm experimenting with svd and am looking for a nicer way of creating >>>>> a matrix from the S diagonal >>>>> >>>>> 4 3 2.23607 0 >>>>> >>>>> needs to be >>>>> >>>>> ] (4 4 $ 4 0 0 0 0 3 0 0 0 0 2.23607 0 0 0 0 0 ) >>>>> 4 0 0 0 >>>>> 0 3 0 0 >>>>> 0 0 2.23607 0 >>>>> 0 0 0 0 >>>>> >>>>> What would be the idiomatic way to make that conversion? I tried >>>>> various versions of reshape and insert. >>>>> >>>>> Not quite... >>>>> >>>>> ],\ S >>>>> 4 0 0 0 >>>>> 4 3 0 0 >>>>> 4 3 2.23607 0 >>>>> 4 3 2.23607 0 >>>>> >>>>> I also thought about multiplying it by a diagonal matrix of 0s and 1s >>>>> but couldn't get that figured out either >>>>> >>>>> Thanks >>>>> Joe >>>> ---------------------------------------------------------------------- >>>> For information about J forums see http://www.jsoftware.com/forums.htm > >>> ---------------------------------------------------------------------- >>> For information about J forums see http://www.jsoftware.com/forums.htm >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm >> > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
