2017-04-17 60 views
3

在下面的高斯方程中,我可以指定高度(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);

我的目标是有一个公式是采用通用的形式,并允许我指定的高度,宽度和中心。

+4

我投票作为题外话,因为它不是关闭这个问题关于电脑编程。 – dbliss

回答

1

你需要做两个变化在高斯的导数的表达式:

  • 分化保存在高度和位置的变化。唯一的问题是,在衍生品的表达式中,您缺少参数b。你应该取代xx-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

+0

伟大的信息,路易斯。谢谢。我做了一个小调整,以便我可以指定函数的峰值。用(c * exp(.5))*()将等式的开始处的c *()替换为参数(a)将指定函数的峰值/谷值。如果有更优雅的方式来做到这一点,我会很有趣,但这似乎工作。再一次感谢你。 ( - *(x + b)。^ 2)/(2 * c^2)))/(d * (C^2); –

+0

@adamdanz好主意,用'c'直接指定实际高度。很高兴我能帮上忙! –