1. 项目概述
在信号处理领域,功率谱(PS)和功率谱密度(PSD)是分析信号频域特性的重要工具。这次我将分享如何利用离散傅里叶变换(DFT)和周期图法(Periodogram)来实现这两种频谱分析,并附上可直接运行的Matlab代码。无论你是信号处理新手还是需要快速实现频谱分析的工程师,这套方法都能帮你快速获得可靠结果。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心概念解析
2.1 功率谱与功率谱密度的区别
功率谱表示信号功率在频域的分布,单位为W/Hz;而功率谱密度则考虑了频率分辨率,单位为W/Hz²。实际应用中:
- 对能量信号(如脉冲)使用功率谱
- 对功率信号(如噪声)使用功率谱密度
2.2 DFT与Periodogram的关系
DFT是频域分析的基础工具,而Periodogram是一种基于DFT的经典功率谱估计方法。其数学表达式为:
matlab复制Pxx = (1/N) * |fft(x)|^2
其中N是信号长度。这种方法计算简单但存在方差大的缺点,后续我们会介绍改进方案。
3. Matlab实现详解
3.1 基础实现代码
matlab复制function [PS, PSD] = spectrum_analysis(x, fs)
% 输入:x-信号,fs-采样频率
% 输出:PS-功率谱,PSD-功率谱密度
N = length(x);
f = (0:N-1)*(fs/N); % 频率轴
% DFT计算
X = fft(x);
% 功率谱计算
PS = (abs(X).^2)/N;
% 功率谱密度计算
PSD = PS/fs;
% 绘制单边频谱
figure;
subplot(2,1,1);
plot(f(1:N/2), PS(1:N/2));
title('功率谱');
xlabel('频率 (Hz)'); ylabel('功率 (W)');
subplot(2,1,2);
plot(f(1:N/2), PSD(1:N/2));
title('功率谱密度');
xlabel('频率 (H
