2012-01-19 20 views
6

Matlab filter() ve SciPy lfilter() belgelerine göre "uyumlu" olması gerektiği anlaşılıyor. Ancak, bir sorunum var, Python'da daha büyük Matlab kodunu taşıyarak, ValueError: object of too small depth for desired array aldım.Matlab filtresi() SciPy lfilter() ile

data = [1:0.2:4]'; 
windowSize = 5; 
filter(ones(1,windowSize)/windowSize,1,data) 

Python içinde tercüme hangi:

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) 

ben bunu sorunlara neden olmadan Kaynağımı sunabilir nasıl düşünemiyorum, ben Matlab'ın belgelerinde verilen örneği kullanacağız Bu durumda şunu elde ederim:
ValueError: object too deep for desired array

Neden bu hataları alıyorum?

cevap

3

Dizilerinizi oluştururken ekstra bir boyut eklemenizin bir nedeni var mı? İhtiyacınız olan bu:

lfilter(np.ones(windowSize)/windowSize, 1, data) 
+0

Bunun bir sebebi yok, sadece cehaletim :) Çevirirken bunu fark etmedim. Teşekkürler – theta

+1

ah evet şimdi hatırlıyorum, matlablarda (10) 10 10, o eski eski matlab günlerini döndürür. –