2013-07-29 82 views
1

我努力。但我在設計濾波器面臨的問題頻率響應:Matlab的Python的Vs的

MATLAB代碼實現Python中的Matlab代碼:

d=fdesign.lowpass('N,Fc',10,40,1600); 

Hd = design(d); 

freqz(Hd) 

frequecy response of low pass filter in Matlab

Python代碼:

N=10 
Fc=40 
Fs=1600 
d=firwin(numtaps=N,cutoff=40,nyq=Fs/2) 
Hd=lfilter(d, 1.0, demod_1) 
w,h=freqz(d) 
semilogy(w, np.abs(h), 'b') 
grid(True) 
ylabel('Amplitude (dB)', color='b') 
xlabel('Frequency (rad/sample)') 

frequecny response in Python

爲什麼python中的濾波器沒有精確的頻率響應

+0

它們以何種方式不同?你爲什麼以不同的方式繪製它們?當你在不同的尺度上繪製它們時,不可能區分它們。你可以使用'freqz'直接生成一個繪圖在Matlab中? – horchler

+0

由於你的單位不同,從情節中看到它們有所不同,有點難以理解。 (我不認爲y軸真的是dB - 是不是隻是數量級?)無論如何,你能使用相同的單位,以便我們看到差異嗎? – EpicAdv

+0

當我在Python中使用freqz直接它不給任何結果.i'am新的python所以我只是從谷歌和所有的幫助做的..... –

回答

3

這是一樣的。請注意,Matlab中的x軸包含「pi」,而在Python中則不包含。 Python中的y軸以自然單位進行標記:10^-1對應於-20 dB,10^-2至-40等

+0

好吧,然後告訴我浩應用給定的過濾器到Matlab中的一個信號我們使用y = filter(Hd,demod_1_b); Python中應該使用什麼Hd = lfilter(d,1.0,demod_1_b)????? –

+0

對不起,我的Matlab版本沒有'fdesign',我從來沒有用過Python。無論如何,這將是一個不同的問題...... –