2012-01-19 37 views
6

Theo tài liệu của chúng cho Matlab filter()SciPy lfilter(), có vẻ như chúng phải là "tương thích". Tuy nhiên tôi có một vấn đề, porting mã Matlab lớn hơn trong Python, mà tôi nhận được ValueError: object of too small depth for desired array. Như tôi đã không thể nghĩ ra làm thế nào tôi có thể trình bày nguồn của tôi mà không làm phức tạp nó, tôi sẽ sử dụng các ví dụ được cung cấp trong tài liệu của Matlab:Bộ lọc Matlab() với SciPy lfilter()

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

mà tôi dịch bằng 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) 

Trong trường hợp này tôi nhận được:
ValueError: object too deep for desired array

Tại sao tôi gặp phải các lỗi này?

Trả lời

3

Có lý do nào khiến bạn thêm một thứ nguyên bổ sung khi tạo mảng của mình không? Đây có phải là những gì bạn cần:

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

Không có lý do gì, chỉ là sự thiếu hiểu biết của tôi :) Tôi không phát hiện ra rằng trong khi dịch. Cảm ơn – theta

+1

ah có Tôi nhớ bây giờ, trong những người thân (10) trả về 10 10, oh những ngày matlab cũ tốt. –

Các vấn đề liên quan