Matlab的filter()与SciPy的lfilter()
根据他们的文档,Matlab的filter()和SciPy的lfilter()看起来应该是“兼容”的。不过,我在把一个比较大的Matlab代码移植到Python时遇到了问题,出现了ValueError: object of too small depth for desired array
的错误。因为我想不出怎么简单地展示我的源代码,所以我就用Matlab文档中的例子:
data = [1:0.2:4]';
windowSize = 5;
filter(ones(1,windowSize)/windowSize,1,data)
我把它翻译成Python是:
import numpy as np
from scipy.signal import lfilter
data = np.arange(1, 4.1, 0.2)
windowSize = 5
lfilter(np.ones((1, windowSize)) / windowSize, 1, data)
在这种情况下,我得到了:
ValueError: object too deep for desired array
为什么会出现这些错误呢?
1 个回答
7
你在创建全是1的数组时,为什么要多加一个维度呢?这样做是有什么特别的需求吗?你是不是需要这样的格式:
lfilter(np.ones(windowSize) / windowSize, 1, data)