我想了解如何將過濾器(在此例中爲Notch(阻帶))過濾器轉換爲Python,但我不知道如何。將過濾器函數轉換爲Python代碼
x(n)=-2*x(n)/(-0.9*x(n) -0.9*x(n-1))
任何人都可以幫助我嗎?
在此先感謝。
我想了解如何將過濾器(在此例中爲Notch(阻帶))過濾器轉換爲Python,但我不知道如何。將過濾器函數轉換爲Python代碼
x(n)=-2*x(n)/(-0.9*x(n) -0.9*x(n-1))
任何人都可以幫助我嗎?
在此先感謝。
如果您使用numpy的陣列,這應該工作:
x[1:]=-2*x[1:]/(-0.9*x[1:]-0.9*x[:-1])
這改變您的到位數組,但你可以很容易地將其分配到一個新的數組。
y=-2*x[1:]/(-0.9*x[1:]-0.9*x[:-1])
請注意,你的算法是不是真的好爲第0個元素定義的,所以我的翻譯離開x[0]
不變。
編輯
要更改迭代到numpy的數組:
import numpy as np
x=np.array(iterable) #pretty easy :) although there could be more efficient ways depending on where "iterable" comes from.
result = []
#prime your result, that is, add the initial values to handle indexing
lower_bound = #
upper_bound = #
for n in range(lower_bound,upper_bound):
result.append(2*result[n]/(-0.9*result[n] -0.9*result[n-1]))
不錯的答案,你應該增加他需要導入的內容。另外對於操作系統,如果你使用的是windows,你將不得不dl numpy:http://scipy.github.com/content.html – pyInTheSky 2012-07-14 16:38:21
@pyInTheSky - 你不需要爲這段代碼導入任何東西。 ..(當然,numpy需要導入某處以獲得一個numpy數組,但它不需要在這裏),但我想這是一個合理的想法... – mgilson 2012-07-14 16:40:26
OP似乎是python的新手,所以道具給你添加編輯。當你得到可以按原樣執行的答案時,我發現它總是很好。 – pyInTheSky 2012-07-14 17:01:06