FFT后谐波量的显示

2024-06-11 16:57:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是Python。输入是一个带有时间戳的.csv文件,当前(AC)。我能画出一个信号的FFT,我看到谐波。我想找出并输出(或在图上显示x和y坐标)谐波的大小(例如,每一个谐波的幅值都是50次谐波)。这样做的最佳方法是什么?非常感谢。在


更新

下面是我的情节: Harmonic plots

我的信号是60Hz,所以我知道我的谐波是120,180,。。。在

我要做的是找到或输出所有谐波的大小(从第二次到第五十次)。所以我想问一下,有什么好方法可以解决这个问题。在

最终,我要实现的是能够计算出基波的谐波振幅(百分比)。在


更新

最后我用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()  

然后我会查找我需要的频率和振幅。在

愿意接受关于更好的方法的建议。在


Tags: csv方法importdf信号aspltzip
1条回答
网友
1楼 · 发布于 2024-06-11 16:57:59

只需看看相应频率库中的振幅。你可以写一个方法来定义你感兴趣的基频(例如60Hz),然后你就知道要看哪个频率段的谐波(120Hz,180Hz,等等)。如果你的DFT设置正确,你就知道箱子内和箱子之间的频率范围。在

这篇stackoverflow帖子将更详细地介绍如何正确地计算容器,以及不同参数对您意味着什么:how to extract frequency associated with fft values in python

同样,如果你知道你的箱子宽度,检查一个给定谐波的功率/振幅是很简单的,因为你知道要看哪个箱子。在

希望这能让你走上正轨。在

相关问题 更多 >