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 <d...@shaw.ca> 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