【问题标题】:Making sinusoids from a wave file rectangular从矩形波形文件制作正弦曲线
【发布时间】:2014-07-22 12:33:40
【问题描述】:

我有一个想要处理的开/关键控 wav 文件。为此,我已将 wav 文件读入一个数组。最大值为 1,最小值为 0。我想将此数组转换为表示系统是否在给定时间在 wav 文件中键入的表示。所以,在有正弦曲线的地方,我想在时域中的新缓冲区中创建一个大矩形。如何在 Python 中做到这一点?

编辑:也许我可以通过信号处理和 SciPy 做到这一点。但是怎么做呢?

【问题讨论】:

    标签: python signals signal-processing


    【解决方案1】:

    不是 100% 确定这就是您的意思。如果您只是想检查 numpy 数组中的哪些值为零(或小于给定值),您可以简单地在数组上使用比较运算符,如下所示

    import numpy as np
    A = np.sin( np.arange(0, 2*np.pi, np.pi/20) ) # some sine wave
    A < 0.1 # or == 0.0, gives an array containing True and False
    

    但在您的情况下,您可能只想计算多个连续的零,因为当信号仍然打开时,正弦波也可能为零。一个简单的解决方案是取两个邻居的平均值,就像这样

    average = (A[:-1] + A[1:]) / 2
    

    希望这就是你要找的。​​p>

    【讨论】:

    • 问题是,正弦曲线在多个波长上的平均值为 0。
    • @horsehair:使用绝对值。即:Abs(SineWave)
    • @Shannon - 啊,真的。在存在低电平噪声的情况下怎么办?我只对键控频率感兴趣。
    • @horsehair 我不太确定你想要达到什么目的。有几种方法可以滤除低电平噪声,但哪种方法合适取决于您的正弦波检测方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 2014-08-01
    • 1970-01-01
    • 2019-08-13
    • 1970-01-01
    相关资源
    最近更新 更多