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

Reply via email to