如何参数化作为高斯导数的曲线

时间:2017-04-17 21:48:03

标签: matlab math parameters gaussian derivative

在下面的高斯方程中,我可以指定高度(a),宽度(c)和中心(b)。

f(x) = a*e^[-(x-b)^2 / (2c^2)]

高斯的导数采用以下形式:

gaussian on left, its derivative on right

我想要做的是提出一个方程式,我可以指定曲线的高度,宽度和中心,如高斯导数

上面的高斯方程的导数是:

d = (a*(-x).*exp(-((-x).^2)/(2*c^2)))/(c^2);

Derivative of gaussian from image 1

一阶Hermite函数采用类似的形式。

d = (((pi)^(-1/4)*exp(-0.5*(x.^2))).*x)*sqrt(2);

我的目标是建立一个采用这种通用形式的方程式,并允许我指定高度,宽度和中心。

1 个答案:

答案 0 :(得分:1)

您需要对Gaussian的导数表达式进行两处更改:

  • 分化可以保持身高和位置的变化。唯一的问题是,在导数的表达式中,您缺少参数b。您应x替换为x-b

  • 对于宽度的变化,由于原始高斯函数具有区域1,因此较高的c会产生更多的宽度,但也会产生更少的高度。为了弥补这一点,乘以c ,以便c中的更改不会影响身高。

因此,参数化函数是

d = c*(a*(-x+b).*exp(-((-x+b).^2)/(2*c^2)))/(c^2);

示例:

figure
hold on
grid
x = -20:.1:20;

a = 1; b = 2; c = 3; % initial values
d = c*(a*(-x+b).*exp(-((-x+b).^2)/(2*c^2)))/(c^2);
plot(x, d, 'linewidth', 1) % blue

a = 2; b = 2; c = 3; % change height
d = c*(a*(-x+b).*exp(-((-x+b).^2)/(2*c^2)))/(c^2);
plot(x, d, 'linewidth', 1) % red

a = 1; b = 7; c = 3; % change center
d = c*(a*(-x+b).*exp(-((-x+b).^2)/(2*c^2)))/(c^2);
plot(x, d, 'linewidth', 1) % yellow

a = 1; b = 2; c = 5; % change width
d = c*(a*(-x+b).*exp(-((-x+b).^2)/(2*c^2)))/(c^2);
plot(x, d, 'linewidth', 1) % purple

enter image description here