Возникла необходимость применить фильтр с радиальной маской (функция focal{raster}). Для построения матрицы использую следующее:
Код: Выделить всё
Circ_mask<-function(x){
#Функция для построения матрицы радиального фильтра
#с заданным радиусом
Matrix<-matrix(NA,1+(2*x),1+(2*x))
Pos<-seq(-x,+x)
for (i in c(1:nrow(Matrix))){
for (j in c(1:ncol(Matrix))){
#Расчет расстояния от центра к текущему
#положению
VecL<-sqrt((Pos[i]**2)+(Pos[j]**2))
if (x>=VecL){
Matrix[i,j]<-1
}
}
}
return(Matrix)
}
Ну и полностью тупой вопрос: если, например, я сделаю следующий вызов своей функции
Код: Выделить всё
> A<-Circ_mask(5)
> A
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
[1,] NA NA NA NA NA 1 NA NA NA NA NA
[2,] NA NA 1 1 1 1 1 1 1 NA NA
[3,] NA 1 1 1 1 1 1 1 1 1 NA
[4,] NA 1 1 1 1 1 1 1 1 1 NA
[5,] NA 1 1 1 1 1 1 1 1 1 NA
[6,] 1 1 1 1 1 1 1 1 1 1 1
[7,] NA 1 1 1 1 1 1 1 1 1 NA
[8,] NA 1 1 1 1 1 1 1 1 1 NA
[9,] NA 1 1 1 1 1 1 1 1 1 NA
[10,] NA NA 1 1 1 1 1 1 1 NA NA
[11,] NA NA NA NA NA 1 NA NA NA NA NA