频域特征指标详解

频域特征指标详解

在信号分析中,频域分析是通过傅里叶变换将信号从时域转到频域,帮助我们理解信号的频谱特性。频域特征指标是用来描述信号频谱特性的重要工具,常见的频域特征指标包括:重心频率、均方频率、均方根频率、频率方差和频率标准差。下面我们将详细讲解这些频域特征指标。

目录

  1. 重心频率 (Centroid Frequency)
  2. 均方频率 (Mean Squared Frequency)
  3. 均方根频率 (Root Mean Square Frequency)
  4. 频率方差 (Frequency Variance)
  5. 频率标准差 (Frequency Standard Deviation)
  6. 代码实现及解读

1. 重心频率 (Centroid Frequency)

重心频率,也称为频率中心,是频谱中信号的“质量中心”,它反映了信号频谱的中心位置。重心频率的定义为:

f centroid = ∑ i = 1 N f i ∣ X ( f i ) ∣ 2 ∑ i = 1 N ∣ X ( f i ) ∣ 2 f_{\text{centroid}} = \frac{\sum_{i=1}^{N} f_i |X(f_i)|^2}{\sum_{i=1}^{N} |X(f_i)|^2} fcentroid=i=1NX(fi)2i=1NfiX(fi)2

其中:

  • f i f_i fi 是第 i i i个频率点,
  • X ( f i ) X(f_i) X(fi) 是信号在频率 f i f_i fi 处的幅值,
  • N N N 是频谱中的总频率点数。

数学推导:

重心频率可以看作是频谱的加权平均频率。其计算方式为,所有频率成分按其幅度平方加权,然后求加权后的频率的平均值。

物理意义:

重心频率反映了信号的“中心”频率,或者说是信号频率分布的平均位置。若重心频率较低,表示信号中低频成分较多;若重心频率较高,表示信号中高频成分较多。

2. 均方频率 (Mean Squared Frequency)

均方频率是频谱的二阶矩,用来描述频谱的平均频率的平方。均方频率的定义为:

f mean squared = ∑ i = 1 N f i 2 ∣ X ( f i ) ∣ 2 ∑ i = 1 N ∣ X ( f i ) ∣ 2 f_{\text{mean squared}} = \frac{\sum_{i=1}^{N} f_i^2 |X(f_i)|^2}{\sum_{i=1}^{N} |X(f_i)|^2} fmean squared=i=1NX(fi)2i=1Nfi2X(fi)2

其中:

  • f i f_i fi 是第 i i i个频率点,
  • X ( f i ) X(f_i) X(fi) 是信号在频率 f i f_i fi 处的幅值,
  • N N N 是频谱中的总频率点数。

数学推导:

均方频率是频率的平方的加权平均,其中权重为每个频率成分的能量。均方频率提供了信号频谱分布的二阶统计信息。

物理意义:

均方频率反映了频谱的能量分布的集中程度。频谱的能量越集中在高频区域,均方频率的值就越大。

3. 均方根频率 (Root Mean Square Frequency)

均方根频率是均方频率的平方根,用来衡量频谱分布的集中程度。其定义为:

f RMS = ∑ i = 1 N f i 2 ∣ X ( f i ) ∣ 2 ∑ i = 1 N ∣ X ( f i ) ∣ 2 f_{\text{RMS}} = \sqrt{\frac{\sum_{i=1}^{N} f_i^2 |X(f_i)|^2}{\sum_{i=1}^{N} |X(f_i)|^2}} fRMS=i=1NX(fi)2i=1Nfi2X(fi)2

其中:

  • f i f_i fi 是第 i i i个频率点,
  • X ( f i ) X(f_i) X(fi) 是信号在频率 f i f_i fi 处的幅值,
  • N N N 是频谱中的总频率点数。

数学推导:

均方根频率是对频谱中每个频率点进行加权的平方根,其权重为信号的能量。它是描述信号频谱分布的一个集中度的指标。

物理意义:

均方根频率是衡量信号频谱能量分布的集中程度的指标,通常用于描述信号的频率特征和频谱宽度。较高的均方根频率意味着信号的频率成分分布较为广泛,能量分布在较高的频率范围。

4. 频率方差 (Frequency Variance)

频率方差是信号频谱中各个频率成分的波动程度,它是频率的二阶中心矩。其定义为:

σ f 2 = ∑ i = 1 N ( f i − f centroid ) 2 ∣ X ( f i ) ∣ 2 ∑ i = 1 N ∣ X ( f i ) ∣ 2 \sigma_f^2 = \frac{\sum_{i=1}^{N} (f_i - f_{\text{centroid}})^2 |X(f_i)|^2}{\sum_{i=1}^{N} |X(f_i)|^2} σf2=i=1NX(fi)2i=1N(fifcentroid)2X(fi)2

其中:

  • f i f_i fi 是第 i i i个频率点,
  • f centroid f_{\text{centroid}} fcentroid 是信号的重心频率,
  • X ( f i ) X(f_i) X(fi) 是信号在频率 f i f_i fi 处的幅值,
  • N N N 是频谱中的总频率点数。

数学推导:

频率方差是频率偏离重心频率的程度的加权平均。它描述了信号频谱的分散程度或波动程度,方差越大,表明信号频谱的分布越分散。

物理意义:

频率方差越大,说明信号的频谱更加分散,频率成分的波动性较强。相反,频率方差越小,说明频率成分分布较为集中。

5. 频率标准差 (Frequency Standard Deviation)

频率标准差是频率方差的平方根,用来衡量信号频谱的分布的广度。其定义为:

σ f = ∑ i = 1 N ( f i − f centroid ) 2 ∣ X ( f i ) ∣ 2 ∑ i = 1 N ∣ X ( f i ) ∣ 2 \sigma_f = \sqrt{\frac{\sum_{i=1}^{N} (f_i - f_{\text{centroid}})^2 |X(f_i)|^2}{\sum_{i=1}^{N} |X(f_i)|^2}} σf=i=1NX(fi)2i=1N(fifcentroid)2X(fi)2

其中:

  • f i f_i fi 是第 i i i个频率点,
  • f centroid f_{\text{centroid}} fcentroid 是信号的重心频率,
  • X ( f i ) X(f_i) X(fi) 是信号在频率 f i f_i fi 处的幅值,
  • N N N 是频谱中的总频率点数。

数学推导:

频率标准差是频率方差的平方根。它是描述信号频谱分布的广度和频谱集中程度的指标。

物理意义:

频率标准差越大,说明信号频谱的宽度越大,频率成分较为分散;而标准差较小,说明频谱较为集中,信号的频率特征较为稳定。

6. 代码实现及解读

下面的Python代码展示了如何计算这些频域特征指标。

import numpy as np
import matplotlib.pyplot as plt

# 计算频谱
def compute_spectrum(x, fs):
    N = len(x)
    X = np.fft.fft(x)
    freqs = np.fft.fftfreq(N, 1/fs)
    X_mag = np.abs(X)
    return freqs[:N//2], X_mag[:N//2]

# 重心频率
def centroid_frequency(f, X_mag):
    return np.sum(f * X_mag**2) / np.sum(X_mag**2)

# 均方频率
def mean_squared_frequency(f, X_mag):
    return np.sum(f**2 * X_mag**2) / np.sum(X_mag**2)

# 均方根频率
def rms_frequency(f, X_mag):
    return np.sqrt(np.sum(f**2 * X_mag**2) / np.sum(X_mag**2))

# 频率方差
def frequency_variance(f, X_mag, f_centroid):
    return np.sum((f - f_centroid)**2 * X_mag**2) / np.sum(X_mag**2)

# 频率标准差
def frequency_std(f, X_mag, f_centroid):
    return np.sqrt(np.sum((f - f_centroid)**2 * X_mag**2) / np.sum(X_mag**2))

# 示例信号(正弦波+噪声)
fs = 1000  # 采样频率
T = 1      # 信号时长
t = np.linspace(0, T, fs)
x = np.sin(2 * np.pi * 50 * t) + 0.5 * np.random.randn(fs)

# 计算频谱
f, X_mag = compute_spectrum(x, fs)

# 计算各个频域特征
f_centroid = centroid_frequency(f, X_mag)
f_mean_squared = mean_squared_frequency(f, X_mag)
f_rms = rms_frequency(f, X_mag)
f_variance = frequency_variance(f, X_mag, f_centroid)
f_std = frequency_std(f, X_mag, f_centroid)

# 输出结果
print("重心频率:", f_centroid)
print("均方频率:", f_mean_squared)
print("均方根频率:", f_rms)
print("频率方差:", f_variance)
print("频率标准差:", f_std)

# 绘制频谱
plt.figure(figsize=(10, 6))
plt.plot(f, X_mag)
plt.title('Frequency Spectrum')
plt.xlabel('Frequency (Hz)')
plt.ylabel('Magnitude')
plt.grid(True)
plt.show()

代码简要解读:

  1. 频谱计算:通过FFT(快速傅里叶变换)计算信号的频谱。
  2. 重心频率:通过加权平均频率来计算信号的频谱中心。
  3. 均方频率:计算频谱的加权平均的平方频率。
  4. 均方根频率:计算频谱的加权平方根频率。
  5. 频率方差与标准差:通过频率偏离重心频率的程度计算频率方差和标准差。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DuHz

喜欢就支持一下 ~ 谢谢啦!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值