python - 使用 firwin 应用带通滤波器
问题描述
我想将带有 firwin 的带通滤波器应用于三音信号。这三种音调分别为 7、11 和 30 赫兹。具体来说,我需要修改截止频率,以便过滤掉第一个和最后一个音调(7 和 30hz)。据我了解,f1 和 f2 应该是带通滤波器的边缘。如果我将它们设置为 10 和 20 hz,它会给我一个错误,告诉我我不能将截止值设置为高于 fs/2。我不理解这个错误,因为我之前将 fs 设置为 100hz。有什么办法可以设置截止频率,以便只通过 11hz?
f1, f2 = 0.5, 0.8
# f1, f2 = 10.0, 20.0
bandpass_coeff = signal.firwin(N_taps, [f1, f2], pass_zero=False)
freqzPlot(bandpass_coeff, 'bandpass filter with firwin ' + str(N_taps) + ' taps')
filterHighest(Fs, Fc, bandpass_coeff)
def generateThreeTones(Fs, interval, freq1 = 7.0, amp1 = 5.0, phase1 = 0.0, freq2 = 11.0, amp2 = 3.0, phase2 = 5.0, freq3 = 30.0, amp3 = 4.0, phase3 = 11.0):
dt = 1.0/Fs # sampling period (increment in time)
time = np.arange(0, interval, dt) # time vector over interval
# generate the sin signal
x = amp1*np.sin(2*math.pi*freq1*time+phase1)+amp2*np.sin(2*math.pi*freq2*time+phase2)+amp3*np.sin(2*math.pi*freq3*time+phase3)
return time, x
解决方案
您应该将 Fs 传递给 signal.firwin。就像是:
bandpass_coeff = signal.firwin(N_taps, [f1, f2], pass_zero=False,fs=Fs)
否则默认值将用于 fs,根据文档,默认值为 2。
推荐阅读
- css - grid-auto-columns 在 Firefox 中不能完全工作
- javascript - 如何在 TypeScript 中打破 ForEach 循环
- canvas - 克隆画布并替换覆盖图像
- java - Mongodb,只查找所有最新的映射记录
- python - 重定向 FD 后如何写入标准输出
- c# - DataTable Column CaseSensitive in Turkey
- sql - part of field is a date...sometimes
- c# - 将 Visual Studio 输出到单个 exe
- javascript - angular-cli 项目中 fluent-ffmpeg 插件的问题
- javascript - Allow only number after 2 characters (My regex 'eat' the first item, see the code)