БПФ - Пик-Пик, Пик, RMS - PullRequest
       31

БПФ - Пик-Пик, Пик, RMS

0 голосов
/ 09 сентября 2018

Я работаю с вибрацией и пытаюсь получить следующую информацию по амплитуде БПФ:

  • Пик до пика
  • Пик
  • RMS

Я выполняю БПФ для простой синусоидальной функции, учитывая оконное отображение Хеннинга. Обратите внимание, что «полная амплитуда» из функции синусоидальной волны равна 5, и выполнение кода ниже БПФ дает мне результат 2,5 амплитуды. Итак, в этом случае я получаю пик от БПФ. А как насчет пика до пика и RMS?

P.-S. - Меня не интересует RMS частоты полосы пропускания (т.е. теорема Парсевалла). Меня интересует RMS от каждого пика, который обычно наблюдается в программном обеспечении вибрации.

import numpy as np
import matplotlib.pyplot as plt


f_s = 100.0 # Hz  sampling frequency
f = 1.0 # Hz
time = np.arange(0.0, 10.0, 1/f_s)
x = 5 * np.sin(2*np.pi*f*time)
N = len(time)
T = 1/f_s

# apply hann window and take the FFT
win = np.hanning(len(x))
FFT = np.fft.fft(win * x)   
n = len(FFT)
yf =  np.linspace(0.0,1.0/(2.0*T),N//2)

plt.figure(1)
plt.plot(yf,2.0/N * np.abs(FFT[0:N//2]))
plt.grid()

plt.figure(2)
plt.plot(time,x)
plt.xlabel('time')
plt.ylabel('Amplitude')
plt.grid()
plt.show()

1 Ответ

0 голосов
/ 09 сентября 2018

Вы получаете пик 2,5 в частотной области, потому что это средняя амплитуда оконного сигнала, и вы не компенсируете вес окна.После нормализации результатов в частотной области для учета окна с использованием следующего:

plt.plot(yf,2.0/win.sum() * np.abs(FFT[0:N//2]))

вы должны получить амплитуду 5, как во временной области.Обратите внимание, что это работает при условии, что частота входного сигнала является точным кратным f_s/N (который в вашем случае равен 0,1 Гц), и при условии, что в основе лежит предположение, что входной сигнал является либо чистым тоном, либо состоит из тонов, которые достаточнодопустимо разделение по частоте.

Пиковое значение будет просто вдвое больше амплитуды, поэтому в вашем примере - 10.

Для среднеквадратичного значения вас, вероятно, интересует среднеквадратичное значениезначение соответствующей синусоидальной тональной составляющей во временной области (в предположении, что входной сигнал действительно состоит из синусоидальной составляющей, частоты которой достаточно разделены по частоте).Среднеквадратическое значение синусоидальной амплитуды во временной области A равно A/sqrt(2), поэтому вам просто нужно разделить на sqrt(2), чтобы получить соответствующее эквивалентное среднеквадратичное значение из значений амплитуды, поэтому в вашем примере 5/sqrt(2) ~ 3.53.

...