识别常见的周期波形(方波,正弦波,锯齿波......)

时间:2009-07-17 03:35:51

标签: audio signal-processing numerical waveform

如果没有任何用户交互,程序如何识别来自ADC的记录中存在哪种类型的波形?

为了这个问题:恒定频率的三角形,正方形,正弦波,半正弦波或锯齿波。水平和频率是任意的,它们会产生噪音,少量失真和其他缺陷。

Various waveforms

我也会提出一些(天真的)想法,你可以上下投票。

7 个答案:

答案 0 :(得分:7)

你肯定想从自相关开始找到基础。

然后,取一个周期(大约)的波形。

现在对该信号进行DFT,并立即补偿第一个bin的相移(第一个bin是基础,如果所有阶段都是相对的,则任务将更简单)。 现在将所有箱子归一化,使基波具有单位增益。

现在将其余的箱子(代表谐波)与您想要测试的一组预先存储的波形进行比较和对比。接受最接近的,如果不能满足通过测量噪声地板确定的精度阈值,则拒绝整体。

答案 1 :(得分:4)

进行FFT,找到奇数和偶数谐波峰值,并将它们降低的速率与常见波形库...峰值...比率进行比较。

答案 2 :(得分:3)

执行自相关以找到基频,测量RMS电平,找到第一个过零点,然后尝试减去该频率,相位和电平的常见波形。取消最佳(超过一些门槛)的胜利。

答案 3 :(得分:2)

这个答案没有噪音,这是一个简单的学术练习。

在时域中,通过波形的样本差异取样。直方图结果。如果分布具有明确定义的峰值(模式)为零,则它是方波。如果分布在正值处具有明确定义的峰值,则它是锯齿状的。如果分布有两个明确定义的峰,一个是负的,一个是正的,它是一个三角形。如果分布很宽并且在任何一侧达到峰值,那么它就是正弦波。

答案 4 :(得分:0)

为自己提供更多信息......

我假设你已经知道一个理论上完美的正弦波没有谐波分量(即只有一个基波)......但是既然你正在通过一个ADC,你可以抛出理论上完美的正弦波。窗口......你必须对抗锯齿并确定什么是“真正的”部分和什么是文物......祝你好运。

以下信息来自this link about csound.

(*)锯齿波包含(理论上)无数个谐波分量,每个谐波分量与分数的倒数之比。因此,基波(1)的幅度为1,第二部分为1/2,第三部分为1/3,第n为1 / n。

(**)方波包含(理论上)无限多个谐波分量,但只有奇数谐波(1,3,5,7,...)幅度是倒数的比值部分数字,就像锯齿波一样。因此,基波(1)的幅度为1,第三部分为1/3,第五部分为1/5,第n为1 / n。

答案 5 :(得分:0)

我认为到目前为止所有这些答案都非常糟糕(包括我以前的......) 经过多一点思考后我会提出以下建议:

1)输入1秒的输入信号样本(不需要那么大,但它简化了一些事情)

2)在整个秒内,计算过零点。此时你有cps(每秒周期数)并知道振荡器的频率。 (如果你想知道的话)

3)现在可以使用较小的样本片段:准确地获取7个零交叉值。 (因此,如果可视化,您的工作缓冲区现在应该看起来像您使用原始问题发布的图形表示之一。)使用此小工作缓冲区执行以下测试。 (此时规范化工作缓冲区可以使生活更轻松)

4)对方波进行测试:方波的零交叉总是有很大的差异,寻找一个大的信号增量,然后在下一个过零点之前几乎没有运动。

5)锯齿波测试:类似于方波,但大信号增量后面将是线性常数信号增量。

6)测试三角波:线性常数(小)信号增量。找到峰值,除以它们之间的距离,并计算三角波应该是什么样的(理想情况下)现在测试实际信号的偏差。设置偏差容差阈值,您可以确定您是在看三角形还是正弦(或抛物线)。

答案 6 :(得分:0)

首先找到基频和相位。你可以用FFT做到这一点。标准化样本。然后用要测试的波形样本(相同频率和相同相位)减去每个样本。将结果平方加起来并除以样本数。最小的数字是您寻找的波形。