Используя del2
, примененный к гауссову, получаем приближение к истинной функции Лапласа (оно использует дискретное приближение к производной).В этом нет необходимости, мы можем легко вычислить выражение для второй производной гауссиана и использовать его.
Сначала мы определим 1D гауссиан:
x = linspace(-4,4,41);
G = exp(-x.^2/2)/sqrt(2*pi);
Далее мы вычислим2-я производная от 1D Gaussian:
Gxx = G .* (x.^2-1);
У гауссиана есть замечательное свойство, заключающееся в том, что вы можете умножить две 1D функции вместе, чтобы получить 2D функцию.Таким образом,
data = G .* Gxx.';
является 2-й производной вдоль оси Y двумерного гауссиана.Транспонированное data
является 2-й производной по оси X.
Лаплас определяется как сумма частных производных по каждой оси:
data = data + data.';
Построение этого приводит к (Я попытался воспроизвести точку зрения исходного графика также):
Вот полный код:
x = linspace(-4,4,41);
G = exp(-x.^2/2)/sqrt(2*pi);
Gxx = G .* (x.^2-1);
data = G .* Gxx.';
data = data + data.';
surf(x,x,data,'facecolor','white')
view(45,13)
set(gca,'dataaspectratio',[1,1,0.08])
grid off
xlabel('X')
ylabel('Y')