Python:Spectrum 的 BURG 算法和绘图

问题描述

我正在尝试使用 BURG 算法可视化频谱。我试图可视化的数据是以毫秒为单位的心跳之间的距离(例如:[700,650,689,...,702])。时间距离是测量从 R 峰值到下一次心跳的 R 峰值。

现在我想用 python 的频谱库来可视化频带(我是个菜鸟)。我试图显示的最小频率是 0.0033Hz,所以我的数据集中的所有时间差异汇总为 5 分钟。

我的方法是先取每个值的倒数,然后乘以 1000,再乘以 60。这应该可以得到每个心跳的 Bpm。

这是它的样子:[67.11409396 64.72491909 ... 64.58557589]

之后我使用频谱的 burg 算法来创建 PSD。 “数据”列表包含我每次心跳的 BpM。

AR,rho,ref = arburg(data.tolist(),7)
PSD = arma2psd(AR,rho=rho,nfft=1024)
PSD = PSD[len(PSD):len(PSD)//2:-1]
plot(linspace(0,0.5,len(PSD)),10*log10(abs(PSD)*2./(1.*pi)))
pylab.legend(['PSD estimate of x using Burg AR(7)'])

我得到的图形如下所示: 5 Minutes Spectrogram

此特定数据已作为 3D 频谱图存在(上图相当于 3D 频谱图的最后 5 分钟): Long Time 3D-Spectrogram

我的图表似乎与 3D 频谱图不匹配。我的频率太差了.... 是什么原因造成的,我该如何解决

此外,我希望图表中的 y 轴不是 [dB],而是绝对值。我试过:

plot(linspace(0,abs(PSD))

但这似乎并没有真正起作用。它只是夸张了。

感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)