Devon,
I like that, or another tacit option
idMat1=: ,~ $ >: {. 1:
idMat1 6
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
Cheers, bob
On 2012-11-20, at 1:33 PM, Devon McCormick wrote:
> I used to have a named verb "idMat" in my own utilities library that was
> defined this way:
> idMat=: =@:i.
>
> but testing this on large arguments led me to formulate this
> idMat=: 3 : '(2$y)$(>:y){.1' NB.* faster and scales better
>
> or, the same thing tacitly:
> idMat=: (2 $ ]) $ 1 {.~ >:
>
>
> On Tue, Nov 20, 2012 at 2:29 PM, Don & Cathy Kelly <[email protected]> wrote:
>
>> A key point that dawned on me, after reading all the helpful comments and
>> suggestions that have come in, is that I don't need a verb- just a noun - so
>> y=: 2 3 4 2 2 3 (it also works for an n,n array)
>>
>> ] u=:=i.# y
>>
>> 1 0 0 0 0 0
>> 0 1 0 0 0 0
>> 0 0 1 0 0 0
>> 0 0 0 1 0 0
>> 0 0 0 0 1 0
>> 0 0 0 0 0 1
>>
>> and I can use u*y for different 'y''s ( as long as the # is the same)
>> to get the desired diagonal elements with off diagonal elements 0
>> I want this because I want to add to the diagonal elements of a matrix.
>> This is for a Newton Raphson based power system load flow.
>>
>> Thanks to all,
>> Don
>>
>>
>>
>> On 20/11/2012 8:24 AM, Roger Hui wrote:
>>
>>> http://www.jsoftware.com/**jwiki/Essays/Identity%20Matrix<http://www.jsoftware.com/jwiki/Essays/Identity%20Matrix>:
>>> 34 different ways
>>> to generate the identity matrix of order n; the first is =@i. and the last
>>> is _&q:@p:@i.
>>> ------------------------------**------------------------------**
>>> ----------
>>> For information about J forums see
>>> http://www.jsoftware.com/**forums.htm<http://www.jsoftware.com/forums.htm>
>>>
>>>
>> ------------------------------**------------------------------**----------
>> For information about J forums see
>> http://www.jsoftware.com/**forums.htm<http://www.jsoftware.com/forums.htm>
>>
>
>
>
> --
> Devon McCormick, CFA
> ^me^ at acm.
> org is my
> preferred e-mail
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm