Привет всем, есть проблемы с преобразованием фурье. Имеем разбитые на дикреты осцилограмму, написан небольшой код, но уже не представляю как быть дальше. Я чайник, тапками не кидайте)
import csv
import matplotlib.pyplot as plt
import numpy as np
from scipy.fft import fft, fftfreq
import array
def get_fft(filename):
mas = []
time = []
sample_time = 0.00004
mas.append(float(row[1])) # Преобразуем строку в число
with open(filename, newline='') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',')
mas = []
time = []
counter = 0
for row in spamreader:
if counter != 0:
mas.append(float(row[1])) # Преобразуйте в float для правильной работы с FFT
time.append(counter * sample_time)
counter += 1
yf = np.fft.fft(mas)
xf = fftfreq(len(mas), sample_time)
return xf, yf
def get_index_of_value(mass, value):
max_index = 0
for ampl in mass:
if(value == ampl):
break
max_index = max_index + 1
return max_index
def get_hist_freq(freqs, ampls):
max_ampl = max(ampls)
max_index = get_index_of_value(ampls,max_ampl)
source_freq = freqs[max_index]
retMass = []
counterDist = 1
counterFreq = 0
for freq in freqs:
counterFreq = counterFreq + 1
if((freq >= (counterDist * source_freq) - 1) & (freq <= (counterDist * source_freq) + 1) ):
counterDist = counterDist + 1
retMass.append(ampls[counterFreq-1])
if(counterDist == 15):
break
return retMass
xf30_Holost_PCH, yf30_Holost_PCH = get_fft("scope_csv_105_2.csv")
xf35_Holost_PCH, yf35_Holost_PCH = get_fft("scope_csv_105_3.csv")
xf40_Holost_PCH, yf40_Holost_PCH = get_fft("scope_csv_105_4.csv")
xf45_Holost_PCH, yf45_Holost_PCH = get_fft("scope_csv_105_5.csv")
xf50_Holost_PCH, yf50_Holost_PCH = get_fft("scope_csv_105_6.csv")
xf30_N195_PCH, yf30_N195_PCH = get_fft("scope_csv_106_1.csv")
xf35_N195_PCH, yf35_N195_PCH = get_fft("scope_csv_106_2.csv")
xf40_N195_PCH, yf40_N195_PCH = get_fft("scope_csv_106_3.csv")
xf45_N195_PCH, yf45_N195_PCH = get_fft("scope_csv_106_4.csv")
xf50_N195_PCH, yf50_N195_PCH = get_fft("scope_csv_106_5.csv")
xf50_N312_PCH, yf50_N312_PCH = get_fft("scope_csv_106_6.csv")
xf50_N246_PCH, yf50_N246_PCH = get_fft("scope_csv_106_7.csv")
xf50_N309_Rozetka, yf50_N309_Rozetka = get_fft("scope_csv_108_0.csv")
xf50_N248_Rozetka, yf50_N248_Rozetka = get_fft("scope_csv_108_1.csv")
xf50_N187_Rozetka, yf50_N187_Rozetka = get_fft("scope_csv_108_2.csv")
xf50_Holost_Rozetka, yf50_Holost_Rozetka = get_fft("scope_csv_108_3.csv")
plt.figure("FFT f30 Holost от ПЧ")
plt.plot(np.abs(xf30_Holost_PCH), np.abs(yf30_Holost_PCH), color="r", label="30")
plt.figure("FFT f35 Holost от ПЧ")
plt.plot(np.abs(xf35_Holost_PCH), np.abs(yf35_Holost_PCH), color="r", label="35")
plt.figure("FFT f40 Holost от ПЧ")
plt.plot(np.abs(xf40_Holost_PCH), np.abs(yf40_Holost_PCH), color="r", label="40")
plt.figure("FFT f45 Holost от ПЧ")
plt.plot(np.abs(xf45_Holost_PCH), np.abs(yf45_Holost_PCH), color="r", label="45")
plt.figure("FFT f50 Holost от ПЧ")
plt.plot(np.abs(xf50_Holost_PCH), np.abs(yf50_Holost_PCH), color="r", label="50")
plt.figure("FFT Холостой от ПЧ")
plt.plot(np.abs(xf30_Holost_PCH), np.abs(yf30_Holost_PCH), color="r", label="30")
plt.plot(np.abs(xf35_Holost_PCH), np.abs(yf35_Holost_PCH), color="g", label="35")
plt.plot(np.abs(xf40_Holost_PCH), np.abs(yf40_Holost_PCH), color="b", label="40")
plt.plot(np.abs(xf45_Holost_PCH), np.abs(yf45_Holost_PCH), color="c", label="45")
plt.plot(np.abs(xf50_Holost_PCH), np.abs(yf50_Holost_PCH), color="y", label="50")
plt.figure("FFT Холостой от ПЧ в 20ln")
plt.plot(np.abs(xf30_Holost_PCH), 20*np.log10(np.abs(yf30_Holost_PCH)), color="r", label="30")
plt.plot(np.abs(xf35_Holost_PCH), 20*np.log10(np.abs(yf35_Holost_PCH)), color="g", label="35")
plt.plot(np.abs(xf40_Holost_PCH), 20*np.log10(np.abs(yf40_Holost_PCH)), color="b", label="40")
plt.plot(np.abs(xf45_Holost_PCH), 20*np.log10(np.abs(yf45_Holost_PCH)), color="c", label="45")
plt.plot(np.abs(xf50_Holost_PCH), 20*np.log10(np.abs(yf50_Holost_PCH)), color="y", label="50")
plt.figure("FFT f30 Нагрузка R195 от ПЧ")
plt.plot(np.abs(xf30_N195_PCH), np.abs(yf30_N195_PCH), color="r", label="30")
plt.figure("FFT f35 Нагрузка R195 от ПЧ")
plt.plot(np.abs(xf35_N195_PCH), np.abs(yf30_N195_PCH), color="r", label="35")
plt.figure("FFT f40 Нагрузка R195 от ПЧ")
plt.plot(np.abs(xf40_N195_PCH), np.abs(yf30_N195_PCH), color="r", label="40")
plt.figure("FFT f45 Нагрузка R195 от ПЧ")
plt.plot(np.abs(xf45_N195_PCH), np.abs(yf30_N195_PCH), color="r", label="45")
plt.figure("FFT f50 Нагрузка R195 от ПЧ")
plt.plot(np.abs(xf50_N195_PCH), np.abs(yf30_N195_PCH), color="r", label="50")
plt.figure("FFT Нагрузка R195 от ПЧ")
plt.plot(np.abs(xf30_N195_PCH), np.abs(yf30_N195_PCH), color="r", label="30")
plt.plot(np.abs(xf35_N195_PCH), np.abs(yf35_N195_PCH), color="g", label="35")
plt.plot(np.abs(xf40_N195_PCH), np.abs(yf40_N195_PCH), color="b", label="40")
plt.plot(np.abs(xf45_N195_PCH), np.abs(yf45_N195_PCH), color="c", label="45")
plt.plot(np.abs(xf50_N195_PCH), np.abs(yf50_N195_PCH), color="y", label="50")
plt.figure("FFT Нагрузка R195 в 20ln")
plt.plot(np.abs(xf30_N195_PCH), 20*np.log10(np.abs(yf30_N195_PCH)), color="r", label="30")
plt.plot(np.abs(xf35_N195_PCH), 20*np.log10(np.abs(yf35_N195_PCH)), color="g", label="35")
plt.plot(np.abs(xf40_N195_PCH), 20*np.log10(np.abs(yf40_N195_PCH)), color="b", label="40")
plt.plot(np.abs(xf45_N195_PCH), 20*np.log10(np.abs(yf45_N195_PCH)), color="c", label="45")
plt.plot(np.abs(xf50_N195_PCH), 20*np.log10(np.abs(yf50_N195_PCH)), color="y", label="50")
plt.figure("FFT f50 Нагрузка R309 от Сети")
plt.plot(np.abs(xf50_N309_Rozetka), np.abs(yf50_N309_Rozetka), color="r", label="50")
plt.figure("FFT f50 Нагрузка R248 от Сети")
plt.plot(np.abs(xf50_N248_Rozetka), np.abs(yf50_N248_Rozetka), color="r", label="50")
plt.figure("FFT f50 Нагрузка R187 от Сети")
plt.plot(np.abs(xf50_N187_Rozetka), np.abs(yf50_N187_Rozetka), color="r", label="50")
plt.figure("FFT f50 Holost от Сети")
plt.plot(np.abs(xf50_Holost_Rozetka), np.abs(yf50_Holost_Rozetka), color="r", label="50")
xf50_N309_Rozetka, yf50_N309_Rozetka = get_fft("scope_csv_108_0.csv")
xf50_N248_Rozetka, yf50_N248_Rozetka = get_fft("scope_csv_108_1.csv")
xf50_N187_Rozetka, yf50_N187_Rozetka = get_fft("scope_csv_108_2.csv")
xf50_Holost_Rozetka, yf50_Holost_Rozetka = get_fft("scope_csv_108_3.csv")
ret = get_hist_freq(np.abs(xf30_N195_PCH,), np.abs(yf30_N195_PCH,))
print("30", ret/ret[0])
ret = get_hist_freq(np.abs(xf35_N195_PCH,), np.abs(yf35_N195_PCH,))
print("35", ret/ret[0])
ret = get_hist_freq(np.abs(xf40_N195_PCH,), np.abs(yf40_N195_PCH,))
print("40", ret/ret[0])
ret = get_hist_freq(np.abs(xf45_N195_PCH,), np.abs(yf45_N195_PCH,))
print("45", ret/ret[0])
ret = get_hist_freq(np.abs(xf50_N195_PCH,), np.abs(yf50_N195_PCH,))
print("50", ret/ret[0])
plt.show()