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

Reply via email to