2017-06-14 91 views
2

我使用Python numpy的ftt.ftt()方法生成信號的傅立葉變換。不過,我想計算一系列頻率的帶寬。 MATLAB有bandpower(x,fs,freqrange)的方法,我試圖專門模擬這個函數的語法。來源:https://www.mathworks.com/help/signal/ref/bandpower.htmlpython numpy等價於bandpower()from MATLAB

它看起來不像numpy具有相同的功能,但有人知道我可以用來模仿bandpower(x,fs,freqrange)的代碼片段嗎?我不清楚這個函數幕後究竟發生了什麼。

注意:如果您知道一些可以實現Matlab函數的非Python僞代碼,那也是有幫助的。

+1

你們是不是要模擬所有的功能,或只用一個輸入參數語法? – Divakar

+0

只是bandpower(x,fs,freqrange)語法 – HexTree

回答

3

在帶計算功率下面的代碼片段[fmin的,fmax的]爲我工作:

import scipy 

def bandpower(x, fs, fmin, fmax): 
    f, Pxx = scipy.signal.periodogram(x, fs=fs) 
    ind_min = scipy.argmax(f > fmin) - 1 
    ind_max = scipy.argmax(f > fmax) - 1 
    return scipy.trapz(Pxx[ind_min: ind_max], f[ind_min: ind_max])