我正在使用 Python。输入是带有时间戳的 .csv 文件,当前 (AC)。我能够绘制信号的 FFT 并看到谐波。我想找到并输出(或在绘图上显示 x 和 y 坐标)谐波的幅度(例如,每个幅度到 50 次谐波)。这样做的最佳方法是什么?谢谢你。
更新
这是我的情节: 谐波情节
我的信号是 60Hz,所以我知道我的谐波将在 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()
然后我会查找我需要的频率和幅度。
愿意就更好的方法提出建议。