Здесь вы можете скачать файл сигнала и питона
Я пытаюсь создать 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
Вывод:
Есть ли способ сделать это?