Hmmm, no need for selecting, so:
3 3 +/@:((0) 4},);._3 |:@({:,],{.)^:(2)1+i.3 3
On 13-11-12 14:13, Aai wrote:
Just a possibility for the interesting case of a torus:
3 3 +/@:(#~0<])@((0) 4},);._3 |:@({:,],{.)^:(2)1+i.3 3
44 43 42
41 40 39
38 37 36
torus elements flattened:
|:@({:,],{.)^:(2)1+i.3 3
and then using
3 3 f ;. _3
with f selecting and summing
On 13-11-12 12:43, Alex Giannakopoulos wrote:
OK, I'm trying to do some work with matrices that involves
transformations
based on local properties of a matrix (neighbouring elements).
This is the sort of thing you may find in image-processing
"edge-detection", etc, or in some cellular automata of the type of
Conway's
"Life".
In other words, I want to be able to supply a matrix, and have it so
processed that the result is a new matrix where each new element was
determined by a function which processed the old elements neighbours.
Any direction, relevant help pages, etc, much appreciated.
If anyone would go as far as offering some sample code that would be
great,
too!
As a trivial example, suppose I want to calculate the sum of the
neighbours
of each element
Say we have a matrix m0 =. 3 3 $ >:i.9
What I want is the verb "neighbours" whereby
neighbours m0
11 19 13
23 40 27
17 31 19
Obviously, I am maily interested in how to extract the "neighbours"
submatrix, without resorting to explicit looping, if that is possible.
To make it a bit more interesting, how would I extract the neighbours if
the matrix was a torus or infinite tiling, such that:
neighb-torus m0
44 43 42
41 40 39
38 37 36
Thanks for any suggestions!
Alex
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
--
Met vriendelijke groet,
@@i = Arie Groeneveld
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm