Python中的信号过滤

时间:2014-12-14 15:49:26

标签: python plot filter signals wave

尝试为我制作的信号创建一个过滤器,但似乎无法获得。每当我调用我的过滤器功能时,我都会收到关于'/'的错误。

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 个答案:

答案 0 :(得分:1)

  • w是一个列表,wnint,因此w/wn提升

    TypeError: unsupported operand type(s) for /: 'list' and 'int'
    

    您可以通过使w成为NumPy数组来修复错误:

    w = np.array([50, 150, 300])
    
  • 您还需要定义n
  • filter被调用,但结果从未使用过。
  • 提示:请注意filterPython builtin的名称。它的 最好不要定义与内置相同名称的函数或变量, 因为它使访问内置更难,可能会令人困惑 对其他人。
  • 提示:Python在语句结尾处不需要分号。