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])
您还需要定义nfilter 被调用,但结果从未被使用。 提示:注意filter 是Python builtin 的名称。它是 最好不要定义与内置函数同名的函数或变量, 因为它使访问内置函数变得更加困难并且可能会造成混淆 给其他人。 提示:Python 语句末尾不需要分号。

【讨论】:

当我绘制它时,我绘制它是 x,y 还是 x,yf?

以上是关于Python中的信号过滤的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中对信号应用过滤器

在 python 中逐步过滤/平滑信号(到左边的直线到右边没有过滤)

python中的fft带通滤波器

从python中的输出信号中去除周期性噪声信号

使用Python中的信号超时

python-daemon 中的信号处理