Julia 中的高通滤波器

Posted

技术标签:

【中文标题】Julia 中的高通滤波器【英文标题】:High pass filter in Julia 【发布时间】:2021-09-25 06:08:29 【问题描述】:

我正在与 Julia 一起录制 5 秒剪辑的现场音频,并且想要截断低于特定频率的所有声音。到目前为止,这是我的记录脚本:

using PortAudio, SampledSignals, LibSndFile, FileIO, Dates

stream = PortAudiostream("HDA Intel PCH: ALC285 Analog (hw:0,0)")

buf = read(stream, 5s)

while true
    save(string("recording_", Dates.format(now(), "yyyymmdd_HHMMSS"), ".wav"), buf, Fs = 48000)

如何过滤掉下面的所有声音,例如10kHz?我一直在查看 DSP 包中的 Highpass 函数,但我不太明白如何正确应用它。

【问题讨论】:

注意:如果您使用dateformat"yyyymmdd_HHMMSS",您将获得更好的性能,因为它只需在编译时将格式字符串转换为DateFormat 一次,而不是在每次循环迭代中。 【参考方案1】:
using DSP

"""
    highpassfilter(signals, fs, cutoff, order=4)
Apply high pass filter to signals, return filtered data
"""
function highpassfilter(signals, fs, cutoff, order=4)
    wdo = 2.0 * cutoff / fs
    filth = digitalfilter(Highpass(wdo), Butterworth(order))
    filtfilt(filth, signals)
end

【讨论】:

以上是关于Julia 中的高通滤波器的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 完整例程84. 由低通滤波器得到高通滤波器

高通滤波法微分算子法神经网络方法实现边缘检测

高通滤波法微分算子法神经网络方法实现边缘检测

OpenCV 完整例程85. 频率域高通滤波器的应用

高通滤波器的方程? [关闭]

Python 高通滤波器