2012-01-19 15 views
6

Matlab filter() और SciPy lfilter() के लिए उनके दस्तावेज़ों के अनुसार, ऐसा लगता है कि वे "संगत" होना चाहिए। हालांकि मुझे एक समस्या है, पाइथन में बड़े मैटलैब कोड को पोर्ट करना, जिसके लिए मुझे ValueError: object of too small depth for desired array मिलता है।मैटलैब फिल्टर() SciPy lfilter()

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

जो मैं अजगर में अनुवाद करने के लिए:

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) 

में मैं यह उलझी बिना कैसे मैं अपने स्रोत पेश कर सकते हैं के बारे में सोच नहीं सकते हैं, मैं Matlab के दस्तावेज़ में प्रदान की जाती उदाहरण का उपयोग करेंगे इस मामले में मुझे मिलता है:
ValueError: object too deep for desired array

मुझे इन त्रुटियों को क्यों प्राप्त होता है?

उत्तर

3

क्या कोई कारण है कि आप अपनी सरणी बनाते समय एक अतिरिक्त आयाम जोड़ रहे हैं?

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

कोई कारण नहीं है, बस मेरी अज्ञानता :) मैं देखा नहीं था कि जब तक अनुवाद: इस है कि तुम क्या जरूरत है। धन्यवाद – theta

+1

आह हाँ मुझे अब याद है, मैटलैब में (10) 10 से 10 लौटाता है, ओह उन पुराने पुराने मैटलैब दिन। –