(*"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
