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 中的高通滤波器的主要内容,如果未能解决你的问题,请参考以下文章