【问题标题】:Creating a 1D Second derivative of gaussian Window创建高斯窗口的一维二阶导数
【发布时间】:2013-09-25 12:56:37
【问题描述】:

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

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

谢谢 克里斯

【问题讨论】:

  • 我肯定会选择:“使用高斯二阶导数方程手动生成窗口”。这样您就可以避免可能出现的数值问题。

标签: matlab filtering gaussian


【解决方案1】:

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

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

地点:

  • Tau 是过滤器的时移。如果要为长度为 T 且样本数为奇数的离散滤波器生成权重,请将 tau 设置为零并允许 t 从 [-T/2,T/2] 变化
  • sigma - 改变运算符的规模。将 sigma 设置为 T/6 之间的某个值。如果您担心过滤器长度过长,则可以将其减少到 T/4
  • C 是归一化因子。这可以通过代数推导出来,但在实践中,我总是在计算过滤器权重后以数字方式进行此操作。为了在平滑周期信号时获得单位增益,我将设置 C = 1 / sum(G'')。

就您对先平滑后求导数的等价性的评论而言,我想说它比这更复杂。作为第二步你会使用哪个导数运算符?一个简单的中心差异不会产生相同的结果。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    相关资源
    最近更新 更多