上面的代码打包成一个函数,并返回功率最大的三个分量的频率
时间: 2024-05-24 13:13:24 浏览: 76
程序输入a、b、c三个值,输出其中最大值。
def max_power_freq(data, Fs):
"""
计算功率最大的三个分量的频率
参数:
data:一维数组,代表信号的采样数据
Fs:采样率
返回值:
一个包含三个频率值的列表,按功率从大到小排序
"""
# 计算FFT
N = len(data)
Y = np.fft.fft(data)/N
f = np.linspace(0, Fs, N)
# 计算功率谱密度
P = np.abs(Y)**2
P = P[:N//2+1]
P[1:-1] = 2*P[1:-1]
f = f[:N//2+1]
# 找到功率最大的三个分量的频率
idx = np.argsort(P)[::-1][:3]
freqs = f[idx]
return freqs.tolist()
阅读全文