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

Reply via email to