Matlab 如何参数化高斯曲线的导数曲线

Matlab 如何参数化高斯曲线的导数曲线,matlab,math,parameters,gaussian,derivative,Matlab,Math,Parameters,Gaussian,Derivative,在下面的高斯方程中,我可以指定高度(a)、宽度(c)和中心(b) 高斯函数的导数采用以下形式: 我想做的是得出一个等式,在这个等式中,我可以指定曲线的高度、宽度和中心,比如高斯导数 上述高斯方程的导数为: d = (a*(-x).*exp(-((-x).^2)/(2*c^2)))/(c^2); 一阶Hermite函数采用类似的形式 d=((pi)^(-1/4)*exp(-0.5*(x.^2))。*x)*sqrt(2) 我的目标是得到一个采用这种一般形式的方程,并允许我指定高度、宽度和中心

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

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

我想做的是得出一个等式,在这个等式中,我可以指定曲线的高度、宽度和中心,比如高斯导数

上述高斯方程的导数为:

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

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

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


我的目标是得到一个采用这种一般形式的方程,并允许我指定高度、宽度和中心

需要对高斯函数导数的表达式进行两次修改:

  • 差异保留高度和位置的变化。唯一的问题是在导数的表达式中缺少参数
    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

非常好的信息,路易斯。非常感谢。我做了一个小的调整,以便指定函数的峰值。通过将等式开头的c*()替换为(cexp(.5))*(),参数(a)将指定函数的峰值/谷值。如果有一个更优雅的方式来做这件事,我会很有趣,但这似乎是工作。再次感谢你。d=(cexp(.5))*(a*(-x+b)。*exp(-(-x+b)。^2)/(2*c^2))/(c^2)@adamdanz好主意,这样
c
直接指定实际高度。很高兴我能帮忙!我投票结束这个问题,因为它与计算机编程无关。
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