Python FFT中的矢量和均方根平均
我有一个数据数组,我在上面执行了FFT。这是我应用的代码Python FFT中的矢量和均方根平均,python,python-3.x,signals,signal-processing,fft,Python,Python 3.x,Signals,Signal Processing,Fft,我有一个数据数组,我在上面执行了FFT。这是我应用的代码 import numpy as np # "data" is a column vector on which FFT needs to be performed # N = No. of points in "data" # dt = time interval between two corresponding data points FFT_data = np.fft.f
import numpy as np
# "data" is a column vector on which FFT needs to be performed
# N = No. of points in "data"
# dt = time interval between two corresponding data points
FFT_data = np.fft.fft(data) # Complex values
FFT_data_real = 2/N*abs(FFT_data) # Absolute values
然而,我通过以下链接:
这里说,为了提高信噪比,我们可以应用“均方根平均FFT”和“矢量平均FFT”
有人能告诉我如何用Python实现这两种方法,或者有什么文档/链接可供参考吗?如图所示:
如果你取样本光谱平方平均值的平方根,你就是在做RMS平均。另一种方法是向量平均法,即分别对实分量和复分量进行平均
显然,要执行两种平均,您需要有多个数据集进行平均。在示例代码中,您有一个单列向量data
。假设有多个这样的列向量排列为2DN
xM
矩阵,其中N
是每个数据集的点数,M
是数据集的数目。由于数据集存储在列中,因此在计算FFT时,需要指定参数axis=0
,以沿列计算FFT
RMS平均FFT
顾名思义,这种方法需要取振幅平方平均值的平方根。由于不同的集合存储在列中,因此需要沿轴1(FFT使用的另一个轴)进行平均
矢量平均FFT
在这种情况下,您需要获得FFT数据的实部和虚部,然后分别计算每个数据的平均值:
FFT_data = np.fft.fft(data, axis=0) # Complex values
real_part_avg = 2/N*np.mean(np.real(FFT_data),axis=1)
imag_part_avg = 2/N*np.mean(np.imag(FFT_data),axis=1)
vector_averaged = np.abs(real_part_avg+1j*imag_part_avg)
请注意,我保留了绝对值的2/N
缩放比例
但是如果我真的只有一个数据集,我该怎么办?
如果数据集恰好是固定的并且足够大,那么您可以将数据集分解为更小的块。这可以通过以下方法将向量重塑为N
xM
矩阵来实现:
data = data.reshape(N,M)
...
然后您可以使用任何一种方法进行平均。非常感谢@SleuthEye提供的宝贵反馈。
data = data.reshape(N,M)
...