Skip to content
Prev 44832 / 398506 Next

circular filter

filter.matrix.center  implements Manhattan or L 1 distance.
If you want to define neighbor points
by Euklidean distances (L 2) use filter.matrix.center(p=2):

filter.matrix.center.p <- function(n=9,size=5,p=2){
   x<-matrix(1,n,n)
   center<-(n+1)/2
   (abs(row(x)-center)^p+abs(col(x)-center)^p)^(1/p) < size
}

example:

 > 0+filter.matrix.center.p(9,4.1)
    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,]    0    0    0    0    1    0    0    0    0
[2,]    0    0    1    1    1    1    1    0    0
[3,]    0    1    1    1    1    1    1    1    0
[4,]    0    1    1    1    1    1    1    1    0
[5,]    1    1    1    1    1    1    1    1    1
[6,]    0    1    1    1    1    1    1    1    0
[7,]    0    1    1    1    1    1    1    1    0
[8,]    0    0    1    1    1    1    1    0    0
[9,]    0    0    0    0    1    0    0    0    0

Peter Wolf



--------------------------------------------------
Peter Wolf wrote: