【问题标题】:Comparing 2 one dimensional signals比较 2 个一维信号
【发布时间】:2011-09-27 23:56:12
【问题描述】:

我有以下问题:随着时间的推移,我有 2 个信号。它们来自同一来源,因此它们应该是相同的。我想检查一下是不是真的。

并发症:

  • 可以用不同的采样率测量它们
  • 开始/结束时间不相关。测量不会同时开始和结束。
  • 两个信号之间可能存在时间偏移。

我的想法是傅立叶变换、卷积和统计方法进行比较。谁能给我发一些链接,我可以在其中找到有关如何处理此问题的更多信息?

【问题讨论】:

  • 你知道每个信号的采样率吗?
  • 是的,我愿意。但是可能会发生采样率不是恒定的。如果可以显着降低解决方案的复杂性,则可以选择限制恒定采样率信号。
  • 这两个波形是完全相同还是来自同一源。例如,如果您有同一个波形文件的两个版本,它们仅在采样率和偏移量上有所不同,那么问题就更容易了。如果您有两个来自同一来源的录音(例如,同一长号的两个录音演奏相同的旋律,但使用不同的设备录制)问题会变得更加困难。
  • 通常不是音频信号。它可以是数字值,但也可以是模拟值。有时它们实际上来自同一个来源,您想检查您的测量设备是否正常,有时它来自两个不同的来源,应该表现相同。

标签: algorithm signal-processing


【解决方案1】:

您只需移动它们以使它们的质心对齐即可轻松校正相位。 (或者,在傅里叶域中只乘以第一个系数的相位的倒数。)

同样,如果您想排列仅给出部分数据的图像,您可以交叉相关并取最大值(这在傅立叶域中也很容易做到)。

剩下这个过程中唯一棘手的部分是处理采样率。现在,如果您先验地知道采样率是多少(并且如果它们与有理数相关),您可以使用 sinc 插值/下采样将它们重新调整为常见的采样率:

https://ccrma.stanford.edu/~jos/st/Bandlimited_Interpolation_Time_Limited_Signals.html

如果您不知道采样率,您可能会有点搞砸了。从技术上讲,您可以尝试对信号的所有不同重新缩放进行暴力破解,但这样做往往会很慢,否则会产生平庸的结果。

最后的建议是,如果您只是想精确匹配声音,您可以尝试使用倒谱并验证信号的峰值是否足够接近某个容差。这种类型的分析在声音和语音识别中被大量使用,并进行了一些改进以使其更加本地化。它往往最适用于语音和音乐等调频数据:

http://en.wikipedia.org/wiki/Cepstrum

【讨论】:

    【解决方案2】:

    傅立叶变换听起来确实是正确的方法。

    我在这里开始解释的数学信息太多了,所以如果你真的想知道这是怎么回事(因为我认为你不能在不理解的情况下使用 FT)你应该使用麻省理工学院的这个参考资料开放课件:http://ocw.mit.edu/courses/mathematics/18-103-fourier-analysis-theory-and-applications-spring-2004/lecture-notes/

    希望对您有所帮助。

    【讨论】:

      【解决方案3】:
      1. 如果您使用的是linux机器并且已经记录了需要处理的波形,您可以尝试使用file命令显示有关记录的详细信息。它会在对 wav 文件调用时为您提供采样率,但我不确定您录制的是什么格式。

      2. 如果信号相对于彼此发生时移,您可以尝试将信号与延迟增加的增量函数进行卷积,然后进行比较。在 MATLAB 上,convall 应该足够好了。

      这些只是“粗略”的尝试(几乎就像破解问题一样)。可能存在移位不变的算法可能会做得更好。

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-24
        • 1970-01-01
        • 2017-07-01
        • 2020-09-25
        • 1970-01-01
        相关资源
        最近更新 更多