2017-06-14 90 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])