FFT计算分析、单边谱的关系
将时域信号分解为不同频率的正弦波组合。时(如你的振动信号),FFT结果具有。所以单边谱的点数 =
文章目录
1. 信号处理的数学基础
1.1 数字信号表示
data = fread(fid, 'float32');
- 数学原理:连续信号 x ( t ) x(t) x(t) 经过采样变成离散信号 x [ n ] = x ( n T s ) x[n] = x(nT_s) x[n]=x(nTs)
- 其中 T s = 1 / f s T_s = 1/f_s Ts=1/fs 是采样周期, f s f_s fs 是采样率
- 这里读取的是已经数字化的振动信号序列
1.2 去除直流分量
data = data - mean(data);
- 数学原理:
x ˉ = 1 N ∑ n = 0 N − 1 x [ n ] \bar{x} = \frac{1}{N}\sum_{n=0}^{N-1} x[n] xˉ=N1n=0∑N−1x[n]
x a c [ n ] = x [ n ] − x ˉ x_{ac}[n] = x[n] - \bar{x} xac[n]=x[n]−xˉ - 物理意义:去除信号的直流偏置,只保留交流成分
- 原因:振动信号关心的是变化量,不是绝对位置
2. 傅里叶变换分析
2.1 离散傅里叶变换(DFT)
Y = fft(data, nfft);
-
数学公式:
X [ k ] = ∑ n = 0 N − 1 x [ n ] ⋅ e − j 2 π k n / N X[k] = \sum_{n=0}^{N-1} x[n] \cdot e^{-j2\pi kn/N} X[k]=n=0∑N−1x[n]⋅e−j2πkn/N
其中 k = 0 , 1 , . . . , N − 1 k = 0, 1, ..., N-1 k=0,1,...,N−1 -
物理意义:将时域信号分解为不同频率的正弦波组合
2.2 频率向量计算
f = (0:nfft-1) * fs / nfft;
- 数学原理:
- 频率分辨率: Δ f = f s N F F T \Delta f = \frac{f_s}{N_{FFT}} Δf=NFFTfs
- 第k个频率分量: f k = k ⋅ Δ f = k ⋅ f s N F F T f_k = k \cdot \Delta f = k \cdot \frac{f_s}{N_{FFT}} fk=k⋅Δf=k⋅NFFTfs
- 示例:若 f s = 1000 f_s = 1000 fs=1000 Hz, N F F T = 1024 N_{FFT} = 1024 NFFT=1024,则 Δ f = 0.977 \Delta f = 0.977 Δf=0.977 Hz
3. 功率谱密度(PSD)计算
3.1 PSD计算公式
PSD = abs(Y).^2 / (fs * nfft);
-
数学原理:
P S D [ k ] = ∣ X [ k ] ∣ 2 f s ⋅ N F F T PSD[k] = \frac{|X[k]|^2}{f_s \cdot N_{FFT}} PSD[k]=fs⋅NFFT∣X[k]∣2 -
单位: 信号单位 2 / Hz \text{信号单位}^2/\text{Hz} 信号单位2/Hz(功率密度)
3.2 单边谱转换
PSD = PSD(1:nfft/2+1);
PSD(2:end-1) = 2 * PSD(2:end-1);
- 数学原理:
- 实信号的FFT具有共轭对称性: X [ k ] = X ∗ [ N − k ] X[k] = X^*[N-k] X[k]=X∗[N−k]
- 单边谱包含全部功率信息,需要将负频率的功率加到正频率上
- 除了DC分量和Nyquist频率,其他频率分量要乘以2
4. 频谱特征提取
4.1 主频率识别
[~, peak_idx] = max(PSD(2:end));
main_freq = f(peak_idx + 1);
- 数学意义:找到功率最大的频率分量
- 物理意义:通常对应机械系统的主要振动频率(如转频)
4.2 谱质心计算
centroid = sum(f_col .* PSD_col) / sum(PSD_col);
-
数学公式:
f c e n t r o i d = ∑ k f k ⋅ P S D [ k ] ∑ k P S D [ k ] f_{centroid} = \frac{\sum_{k} f_k \cdot PSD[k]}{\sum_{k} PSD[k]} fcentroid=∑kPSD[k]∑kfk⋅PSD[k] -
物理意义:
- 类似于"重心"概念,表示频谱能量的集中位置
- 谱质心高→高频成分多(尖锐声音)
- 谱质心低→低频成分多(沉闷声音)
5. 信号参数的物理意义
5.1 采样定理
- Nyquist定理: f s > 2 f m a x f_s > 2f_{max} fs>2fmax
- 最高可分析频率: f N y q u i s t = f s / 2 f_{Nyquist} = f_s/2 fNyquist=fs/2
5.2 频率分辨率与时间长度
- 频率分辨率: Δ f = 1 T \Delta f = \frac{1}{T} Δf=T1,其中 T T T 是信号时长
- 时频不确定性原理: Δ t ⋅ Δ f ≥ 1 4 π \Delta t \cdot \Delta f \geq \frac{1}{4\pi} Δt⋅Δf≥4π1
6. 可视化解释
6.1 对数坐标图
semilogx(f, 10*log10(PSD));
- 分贝转换: P S D d B = 10 log 10 ( P S D ) PSD_{dB} = 10\log_{10}(PSD) PSDdB=10log10(PSD)
- 优点:
- 更好地显示大动态范围的数据
- 人耳对声音的感知是对数的
6.2 实际应用示例
假设测量一个转速为30 Hz的电机振动:
- 基频:30 Hz(1倍频)
- 谐波:60 Hz(2倍频)、90 Hz(3倍频)等
- 谱质心可能在 50-100 Hz 范围,表示能量分布
FFT和单边谱的关系
1. FFT的对称性
当输入信号是实数时(如你的振动信号),FFT结果具有共轭对称性:
X[k] = X*[N-k]
(其中*表示共轭)- 这意味着频谱的后半部分是前半部分的镜像
2. 频率点的分布
对于N点FFT:
完整频谱: 0, fs/N, 2fs/N, ..., (N-1)fs/N
对应索引: 0, 1, 2, ..., N-1
3. 单边谱的构造
由于对称性,我们只需要保留:
- DC分量 (k=0)
- 正频率部分 (k=1 到 k=N/2-1)
- 奈奎斯特频率 (k=N/2,当N为偶数时)
所以单边谱的点数 = 1 + (N/2-1) + 1 = N/2 + 1
4. 代码验证
让我用你的代码验证一下:让我用更简单的方式解释:
具体例子
假设你有8点FFT:
完整FFT: [0, 1, 2, 3, 4, 5, 6, 7] (8个点)
对应频率: [0, fs/8, 2fs/8, 3fs/8, 4fs/8, 5fs/8, 6fs/8, 7fs/8]
由于对称性:
- 点5,6,7是点3,2,1的镜像
- 我们只需要保留: [0, 1, 2, 3, 4] (5个点)
- 5 = 8/2 + 1 ✓
在你的代码中
nfft = 2^12; % 4096点FFT
PSD = PSD(1:nfft/2+1); % 保留前2049个点
f = f(1:nfft/2+1); % 对应的频率向量
这样做的原因是:
- 节省存储空间:只存储一半的数据
- 物理意义清晰:只显示0到奈奎斯特频率的范围
- 避免冗余:消除镜像频率分量

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)