进行 FFT 时提取主频率返回错误频率

问题描述 投票:0回答:2

我将加速度计传感器数据(时间、x 轴、y 轴和 z 轴)保存在 csv 文件中。我正在尝试从每个轴获取 FFT。我的图表如下:

现在,我想从每个 FFT 图中提取主频率并获得其相应的幅度。经过一些研究后,我想出了代码:

def Freq(self):
    
    freqs = arange(1, self.N, 1)[:int(self.N/2) - 1]
    Amptsx = (2/self.N)* abs( fft(self.fx)[:int(self.N/2)] )[1:]
    Amptsy = (2/self.N)* abs( fft(self.fy)[:int(self.N/2)] )[1:]
    Amptsz = (2/self.N)* abs( fft(self.fz)[:int(self.N/2)] )[1:]
    
    
    print 'The highest frequency in the x axis is:', round(np.argmax(Amptsx),6)
    print 'The highest frequency in the y axis is:', round(np.argmax(Amptsy),6)
    print 'The highest frequency in the z axis is:', round(np.argmax(Amptsz),6)
    
    print 'The highest amplitude in the x axis is:', round(np.max(Amptsx),6) 
    print 'The highest amplitude in the y axis is:', round(np.max(Amptsy),6)
    print 'The highest amplitude in the z axis is:', round(np.max(Amptsz),6) 
    
    return freqs, Amptsx, Amptsy, Amptsz

我的振幅结果准确,但频率不准确。我的结果如下:

The highest frequency in the x axis is: 0.0.
The highest frequency in the y axis is: 1.0.
The highest frequency in the z axis is: 15.0.
The highest amplitude in the x axis is: 0.768894.
The highest amplitude in the y axis is: 0.59046.
The highest amplitude in the z axis is: 0.3679.

我的猜测是我的频率被四舍五入。我尝试修复它但没有成功。有什么建议吗?

python fft frequency
2个回答
3
投票

有两个问题:

freqs = arange(1, self.N, 1)[:int(self.N/2) - 1]
Amptsx = (2/self.N)* abs( fft(self.fx)[:int(self.N/2)] )[1:]
print 'The highest frequency in the x axis is:', round(np.argmax(Amptsx),6)
  1. 频率和幅度数组未正确对齐,这意味着对应于给定频率的幅度在

    Amptsx
    数组中的索引与频率在
    freqs
    数组中的索引不同。

    原因是,通过使用

    [:int(self.N/2) - 1]
    ,您可以从 freqs
    end
    中删除一项额外的项目,而使用
    [1:]
    则可以从 Amptsx
    start
    中删除一项额外项目。

    您应该从 both 数组的末尾或开头删除一项,具体取决于哪一项在您的应用程序中具有正确的含义。

    我怀疑您这样做是为了从数组的开头删除零频率的值(即传感器值中的恒定偏移),因此在这种情况下,您应该将

    [:int(self.N/2) - 1]
    更改为
    [1:int(self.N/2)]
    以获得
    freqs 
    .

  2. argmax
    为您提供 Amptsx 中最高值的
    index
    ,这不是频率。您应该使用该索引从
    freqs
    获取频率值。


0
投票

您可以分享您用来提取图形的代码吗?

© www.soinside.com 2019 - 2024. All rights reserved.