50赫兹信号的FFT

时间:2017-05-25 11:58:02

标签: signal-processing fft

我必须采用50 Hz正弦波的FFT并测量到16次谐波 我的采样频率符合奈奎斯特标准:fs = 16*50*2 = 1600 Hz = 1600 samples/sec 即在50Hz的一个周期中对应于20毫秒或32个样本。

如图1所示,每个周期我将采集32个样本。

然后根据图2,我将对ADC采样电压系列x[n]进行32点FFT,其中n = 0到31 然后FFT算法将值X[k]返回到k = 0到31。

  1. 如果x[n]是电压样本 所以我的问题在于 FFT算法X[k]的输出,其中k = 0到31:
    X[0] =基频
    X[1] = 1 st 谐波     。     。     。
    X[31] = 31 st 谐波

    是不是?

    此外,如果X[1] = 1 + j的值,则X[1] = sqrt(2)= 1.4142。那么这个值1.4142是一次谐波的峰值吗?现在,如果我必须找到一次谐波的RMS值 是Vrms = Vm / sqrt(2)= 1?

  2. 输入信号的32个样本也应该从正弦波的过零点开始,还是可以在sin波的任何时间点开始,如图3所示?

    1. 在将32个50 Hz信号样本馈送到FFT算法之前还有一件事我是否必须对这些样本进行一些数字滤波。为什么我问这个问题因为假设在服用20 th&第16个样本如果出现一些噪声尖峰,那么在这种情况下它将不是真正的值。如果是,那么哪种数字滤波方法最好?
  3. 请纠正我。

    enter image description here

2 个答案:

答案 0 :(得分:1)

  

X[0] =基频
    X[1] = 1 st 谐波...
    X[31] = 31 st 谐波

     

是不是?

几乎但并不完全。你不应该忘记常数项(它将所有假定的对应关系向上移动),并且任何高于奈奎斯特频率的项都是从较低频率分量中反映出来的。对应关系如下:

  • X[0]是常数术语(也称为DC偏差)
  • X[1]是基本频率
  • X[2]是第一个谐波
  • X[16]是15 th 谐波
  • X[17]X[31]分别是X[15]X[1]的复杂共轭。
  

此外,如果X[1] = 1 + j的值,则X[1]的幅度为sqrt(2)= 1.4142。那么这个值1.4142是一次谐波的峰值吗?

由于您的信号频率是FFT频率区宽度的精确倍数,因此X[1]的幅度确实对应于相应频率分量的峰值。如前所述,X[1]将对应于基频,而不是一次谐波。因此,示例中的1.4142值将是基频的峰值。

  

现在如果我必须找到一次谐波的RMS值那么它是Vrms = Vm / sqrt(2)= 1?

这确实是单个谐波的RMS与其峰值之间的关系。但是请注意不要将其用于在RMS和具有多个谐波的信号的峰值之间进行转换,因为该关系不是线性的。

  

输入信号的32个样本也应该从正弦波的过零点开始,还是可以在sin波的任何时间点开始,如图3所示?

您可以在周期波中的任何时间偏移处开始,但这将在FFT结果中引入相位偏移。如果您只对频率成分的大小感兴趣,那么它就不重要了。

答案 1 :(得分:1)

X [1]和X [31]都将包含任何频谱的能量,而不是与频率为Fs / N的正弦曲线相关,不仅包括基波,还包括任何频谱(最高为Fs / 2) )频率不是Fs / N的精确整数倍。例如在你的情况下,包括一个49赫兹的正弦波。

作为复共轭的X [1]和X [31]将在它们之间分裂能量,并且基波的峰值可以从FFT结果X [1]的幅度缩放0.5 * N, FFT的长度。比例因子也可以是N或0.5或0.5 * sqrt(N),具体取决于您特定FFT的实现。

添加了: 重点3:噪声尖峰可以包含宽带能量,因此“真实”FFT值将包括它们的一些效果。完全去除1个样本尖峰需要在线性滤波之外的非线性方法或使用FFT。