【发布时间】:2021-01-27 18:15:11
【问题描述】:
我想将带有 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
【问题讨论】:
标签: python scipy signals bandpass-filter