创建高斯窗口的一维二阶导数

时间:2013-09-20 07:58:01

标签: matlab filtering gaussian

在MATLAB中,我需要生成高斯窗口的二阶导数,以应用于表示曲线高度的向量。我需要二阶导数来确定拐点的拐点和最大值的位置。表示曲线的矢量可能非常噪声,因此使用高斯窗口。 生成此窗口的最佳方法是什么? 是否最好使用gausswin函数生成高斯窗口,然后采用其二阶导数? 或者使用高斯二阶导数的公式手动生成窗口? 或者甚至最好将高斯窗口应用于数据,然后采用它的二阶导数? (我知道最后两个在数学上是相同的,但是对于离散数据点,我不知道哪个更准确)

高度向量的最大长度约为100-200个元素。

由于 克里斯

1 个答案:

答案 0 :(得分:1)

我会创建一个线性滤波器,由高斯函数的二阶导数生成的权重组成,并将其与向量进行卷积。

高斯的二阶导数的权重由下式给出:

Second Derivative of a Gaussian

其中:

  • Tau是过滤器的时移。如果要为具有奇数个样本的长度为T的离散滤波器生成权重,请将tau设置为零并允许t从[-T / 2,T / 2]
  • 变化
  • sigma - 改变运营商的规模。将sigma设置为介于T / 6之间的值。如果您担心长滤波器长度,那么这可以减少到T / 4
  • C是归一化因子。这可以用代数推导出来,但在实践中,我总是在计算滤波器权重后用数字来做。对于平滑周期信号时的单位增益,我将设置C = 1 / sum(G'')。

就你对平滑的等价性和稍后采用衍生物的评论而言,我会说它比那更具参与性。你会在第二步中使用哪个衍生算子?一个简单的中心差异不会产生相同的结果。

通过用两个不同尺度的高斯滤波数据,然后取两个结果矢量之间的逐点差异,可以得到高斯二阶导数的等效(但近似)响应。有关该方法,请参阅Difference of Gaussians