В MATLAB R2015a или новее больше нет необходимости (или желательно с точки зрения производительности) использовать fspecial
, а затем imfilter
, поскольку есть новая функция под названием imgaussfilt
, которая выполняет эта операция за один шаг и более эффективно.
Основной синтаксис:
B = imgaussfilt(A,sigma)
фильтрует изображениеA
с помощью двумерного гауссова сглаживающего ядра со стандартным отклонением, заданным вsigma
.
Размер фильтра для данного стандартного отклонения Гаусса (sigam
) выбирается автоматически, но также может быть задан вручную:
B = imgaussfilt(A,sigma,'FilterSize',[3 3]);
По умолчанию установлено значение 2*ceil(2*sigma)+1
.
Дополнительные функции imgaussfilter
: возможность работы с gpuArray
с, фильтрация в частотной или пространственной области и расширенные опции дополнения изображения. Это очень похоже на IPP ... хммм. Кроме того, есть 3D-версия под названием imgaussfilt3
.
Для тех, которые ищут dplyr/tidyverse версию. Построение на решении Gavin Simpson:
# Create DF
set.seed(123)
x <- rnorm(100)
DF <- data.frame(x = x,
y = 4 + (1.5*x) + rnorm(100, sd = 2),
b = gl(5, 20))
# Change reference level
DF = DF %>% mutate(b = relevel(b, 3))
m2 <- lm(y ~ x + b, data = DF)
summary(m2)