python - 如何从 pandas 数据帧制作 PSD 图?

标签 python matplotlib fft

Here you can download the signal and python file

我正在尝试制作一个 psd 图:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.read_csv('signal.csv')
fft = pd.DataFrame(np.abs(np.fft.rfft(df['1'])))   #y
n = df['0'].size
unit_freq = 1000000000 #Giga
sample_rate = 10000000000   #10 GS/s
freq_sample_fact = sample_rate/unit_freq
freq = np.fft.rfftfreq(n, 1/freq_sample_fact)       #x
fft.index = freq
fft.values[0] = 0


arfft = fft.to_numpy().T
plt.psd(arfft, 512, 0.01)


plt.xlabel('Frequenz / GHz')
plt.ylabel('Signalstärke')
plt.title('FFT')
plt.show()

警告:

Warning (from warnings module):
  File "C:\Users\Artur\AppData\Local\Programs\Python\Python37\lib\site-packages\matplotlib\axes\_axes.py", line 7179
    line = self.plot(freqs, 10 * np.log10(pxx), **kwargs)
RuntimeWarning: divide by zero encountered in log10

输出:

enter image description here

有办法实现这一点吗?

最佳答案

psd 函数在内部执行所有 FFT 操作。

import pandas as pd
import matplotlib.pyplot as p 
import numpy as np

df = pd.read_csv('c:/pddata/stackoverflow_signal.csv')
dt=df.iloc[10,0]   -df.iloc[0,0]
print(f'time delta: {dt*1e5:.3f} us')  # 10 MHz sampling, if time is in seconds
data=df['1']
print(f'length of vector: {len(data)}, time = {(dt*1e2*len(data)):.3f} ms')

p.figure(figsize=(20,8))
p.subplot(211)
p.plot(data)
p.subplot(212)
p.psd(data,  2000,1/0.1);

请参阅文档中的示例: https://matplotlib.org/3.1.1/gallery/lines_bars_and_markers/psd_demo.html#sphx-glr-gallery-lines-bars-and-markers-psd-demo-py
如果时间向量以秒为单位,则采样率为 10 MSa/sec,最大采样率为 10 MSa/sec。频率 5 MHz。

enter image description here

关于python - 如何从 pandas 数据帧制作 PSD 图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58325722/

相关文章:

python - 获取for循环中的项目总数

python - 循环中定义的单元格变量

python - 属性错误: 'bool' object has no attribute 'pop' - Odoo v8 to Odoo v10 community

python - 无法安装 Geopandas

python - 如何在matplotlib中填充分散区域?

python - matplotlib动画可以保存成什么格式?

python - 使用 numpy fft 提取相位信息

matlab - fft(DFT) x 轴的单位

python - Matplotlib 图例指南基础实例

image - FFT 图像比较(理论)