在下面的高斯方程中,我可以指定高度(a),宽度(c)和中心(b)。
f(x) = a*e^[-(x-b)^2 / (2c^2)]
高斯的导数采用以下形式:
我想要做的是提出一个方程式,我可以指定曲线的高度,宽度和中心,如高斯导数。
上面的高斯方程的导数是:
d = (a*(-x).*exp(-((-x).^2)/(2*c^2)))/(c^2);
一阶Hermite函数采用类似的形式。
d = (((pi)^(-1/4)*exp(-0.5*(x.^2))).*x)*sqrt(2);
我的目标是建立一个采用这种通用形式的方程式,并允许我指定高度,宽度和中心。
答案 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