Матрица для скользящего окна
Добавлено: 04 июн 2014, 23:06
Здравствуйте!
Возникла необходимость применить фильтр с радиальной маской (функция focal{raster}). Для построения матрицы использую следующее:
Собственно вопрос -- есть ли в R готовая функция для подобных целей (сам пока не нашел)? Или, может, посоветуете более эффективный метод. Эта функция сильно грузная при больших радиусах. Плюс, если нужно будет добавить веса, то придется еще парится.
Ну и полностью тупой вопрос: если, например, я сделаю следующий вызов своей функции
, то какой у меня будет радиус скользящего окна 5 или, все же 5.5?
Возникла необходимость применить фильтр с радиальной маской (функция 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