|
离散傅里叶变换的公式:
其中,
: 测得的离散时间序列;
:所求的频域序列;
注意,不是物理频率,但是可以计算物理频率为
,这里
是采样频率,
是数据序列长度。
写一段代码来实现上的分析:
clear all;
close all;
%设置参数
Fs = 1000; % 采样频率 1000 Hz
T = 1/Fs; % 采样间隔
L = 1500; % 信号长度 1500个点
t = (0:L-1)*T; % 时间向量
% 生成测试信号:2个频率成分 + 噪声
f1 = 50; % 50 Hz
f2 = 120; % 120 Hz
A1 = 0.7; % 幅度1
A2 = 1.0; % 幅度2
signal = A1*sin(2*pi*f1*t) + A2*sin(2*pi*f2*t) + 0.5*randn(size(t));
% 使用基于定义的DFT
X_manual = zeros(1, L);
for k = 0:L-1
for n = 0:L-1
X_manual(k+1) = X_manual(k+1) + signal(n+1) * exp(-1i*2*pi*k*n/L);
end
end
% 库函数计算结果
X_fft = fft(signal);
% 对比计算结果
figure;
f_axis = Fs*(0:L-1)/L;
plot(f_axis, abs(X_manual), 'b-', 'LineWidth', 1.5);
hold on
plot(f_axis, abs(X_fft), 'r--', 'LineWidth', 1.5);
hold off
xlabel('频率 (Hz)');
ylabel('幅度');
title('幅度谱对比(0-200 Hz)');
04/01/2026
于昆明
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2026-4-1 10:51
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社