在 Python3.7.0 中使用 scipy.signal.lfilter() 时出错:

我有一个包含 256 个数据元素的列表。我想使用椭圆过滤器过滤这些数据。


import matplotlib.pyplot as plt

from scipy.signal import *

import numpy as np


def elliptical_bandpass():

    Fs=256

    lowcut=5

    highcut=30

    order=5

    Rp = 0.5;      # Passband Ripple (dB)

    Rs = 30;     #  Stopband Ripple (dB)

    nyq = Fs/2 #Nyquist frequency

    wp = lowcut / nyq

    ws = highcut / nyq


当我运行它时,我看到滤波器设计和系数是正确的,但我使用 lfilter 时出错


文件“C:\Users\gtec\AppData\Local\Programs\Python\Python37-32\lib\site-packages\scipy\signal\signaltools.py”,第 1354 行,在 lfilter 中返回 sigtools._linear_filter(b, a, x,axis) SystemError: 返回 NULL 没有设置错误


以前我使用的是 python2.7,它执行时没有任何错误。现在我使用的是 Python3.7.0


慕勒3428872
浏览 374回答 1
1回答

梵蒂冈之花

问题是这c3是一个字符串列表。 lfilter期望一个数值序列。它不会自动将字符串转换为数字,因此您必须在调用lfilter.做类似的事情c3 = [float(t) for t in c3]在传递c3到lfilter.更好的是回顾一下您c3在“真实”代码中的实际创建方式(假设问题中的代码是一个简化示例)。在创建时将字符串转换为数字是有意义的c3。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python