用Python-lfi实现信号滤波

2024-09-30 04:31:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,在过滤一个信号时完全被卡住了。这是代码:

import numpy as np
import matplotlib.pyplot as plt
from scipy import signal

fs=105e6
fin=70.1e6

N=np.arange(0,21e3,1)

# Create a input sin signal of 70.1 MHz sampled at 105 MHz
x_in=np.sin(2*np.pi*(fin/fs)*N)

# Define the "b" and "a" polynomials to create a CIC filter (R=8,M=2,N=6)
b=np.zeros(97)
b[[0,16,32,48,64,80,96]]=[1,-6,15,-20,15,-6,1]
a=np.zeros(7)
a[[0,1,2,3,4,5,6]]=[1,-6,15,-20,15,-6,1]

w,h=signal.freqz(b,a)
plt.plot(w/max(w),20*np.log10(abs(h)/np.nanmax(h)))
plt.title('CIC Filter Response')

output_nco_cic=signal.lfilter(b,a,x_in)

plt.figure()        
plt.plot(x_in)
plt.title('Input Signal')
plt.figure()        
plt.plot(output_nco_cic)
plt.title('Filtered Signal')

情节:

Input, filter and output signals

正如你所看到的,虽然过滤传递函数是正确的,但是输出是错误的。我不明白为什么我的代码不能工作。我已经在Matlab中编写了相同的代码,输出看起来还不错。

谢谢你的帮助!


Tags: 代码inimportsignalplottitleasnp

热门问题