Отображение величины гармоник после БПФ - PullRequest
0 голосов
/ 04 октября 2019

Я использую Python. Входные данные. CSV-файл с отметкой времени, текущий (AC). Я могу построить БПФ сигнала и вижу гармоники. Я хотел бы найти и вывести (или отобразить на графике координаты x и y) величину гармоник (например, каждую величину до 50-й гармоники). Что будет лучшим способом для этого? Спасибо.


Обновление

Вот мой график: Графики гармоник

Мой сигнал 60 Гц, поэтому я знаю свои гармоникибудет в 120, 180, ...

То, что я пытаюсь сделать, это найти или вывести величину всех гармоник (от 2-й до 50-й). Поэтому я хотел бы спросить, что есть хороший способ приблизиться к этому.

В конечном счете, я пытаюсь добиться того, чтобы иметь возможность рассчитать амплитуду гармоники для основной (в процентах).


Обновление

В итоге я использовал zip для отображения частоты и амплитуды, а затем распечатал их. Вот мой код:

import pandas as pd
import numpy as np
import plotly
import matplotlib.pyplot as plt
from scipy.fftpack import fft, ifft
from scipy import arange
import csv
import math

df=pd.read_csv (r'C:\Users\20amps.csv')
N=df.shape[0] #Number of samples
T=125000 #Frequency of Signal
k=arange(N)
Ts=N/T
freq=k/Ts
freq=freq[range(N//40)]

amp=df["AC1 A"]
rms= [i * math.sqrt(2) for i in amp]
yf=fft(rms)/N
yf=yf[range(N//40)]

zipped = zip (freq, abs(yf))
print (zipped)
w = list(zipped)
print(w)

#Writing to csv file
#with open('data.csv', 'w') as csvFile: 
#    writer =csv.writer(csvFile, delimiter=',')
#   writer.writerow(w)

plt.plot(freq, abs(yf),'r') #plot results
plt.grid()
plt.xlabel('Frequency')
plt.ylabel(r'Amplitude')
plt.show()  

Тогда я просто посмотрю нужные мне частоты и амплитуды.

Буду открыт для предложений о лучших способах сделать это.

1 Ответ

0 голосов
/ 04 октября 2019

Просто посмотрите на амплитуду в соответствующих частотных бинах. Вы можете написать метод для определения основной частоты, представляющей интерес (например, 60 Гц), и тогда вы будете знать, какие частотные элементы следует искать для гармоник (120 Гц, 180 Гц и т. Д.). Если вы правильно настроили DFT, вы знаете частотный диапазон внутри и между ячейками.

В этом сообщении о повышении стека более подробно рассказывается о том, как правильно рассчитать ячейки и что для вас значат различные параметры: Как извлечь частоту, связанную со значениями FFT в Python

Опять же, если вы знаете ширину вашего бина, просто проверить мощность / амплитуду в данной гармонике, так как вы знаете, какой бин (ы) дляпосмотрите.

Надеюсь, что вы попадете на правильный путь.

...