Python中的信号过滤
Posted
技术标签:
【中文标题】Python中的信号过滤【英文标题】:Signal filtering in Python 【发布时间】:2014-12-14 15:49:26 【问题描述】:尝试为我制作的信号创建过滤器,但似乎无法获得。每当我调用过滤器函数时,我都会收到关于“/”的错误。
import numpy as np
from numpy import sqrt
import matplotlib.pyplot as plt
import scipy as sp
import math
def sinyal(N,c,f,p):
y=np.zeros(N)
t=np.linspace(0,2*np.pi,N)
Nf=len(c)
for i in range(Nf):
y+=c[i]*np.sin(f[i]*t)
return y;
def filter (w,wn):
yf=1.0/sqrt(1.0+(w/wn)**(2.0*n))
return yf;
c=[2,5,10]
f=[50, 150, 300]
p=[0,0]
N=2000
w=[50,150,300]
x=np.linspace(0,2.0*math.pi,N)
y=sinyal(N,c,f,p)
yf=filter(w,200)
plt.plot(x[:100],y[:100])
plt.show()
【问题讨论】:
【参考方案1】:w
是一个列表,wn
是一个int
,所以w/wn
引发了
TypeError: unsupported operand type(s) for /: 'list' and 'int'
您可以通过将 w
设为 NumPy 数组来修复错误:
w = np.array([50, 150, 300])
您还需要定义n
。
filter
被调用,但结果从未被使用。
提示:注意filter
是Python builtin 的名称。它是
最好不要定义与内置函数同名的函数或变量,
因为它使访问内置函数变得更加困难并且可能会造成混淆
给其他人。
提示:Python 语句末尾不需要分号。
【讨论】:
当我绘制它时,我绘制它是 x,y 还是 x,yf?以上是关于Python中的信号过滤的主要内容,如果未能解决你的问题,请参考以下文章