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

Reply via email to