MATLAB STFT: 短时傅里叶变换及三维图像可视化
以下代码示例演示了如何使用 MATLAB 的 stft 函数对信号进行短时傅里叶变换 (STFT),并绘制变换后的三维图像。
% 生成示例信号
fs = 1000; % 采样率
t = 0:1/fs:1; % 时间向量
f1 = 10; % 第一个频率成分
f2 = 50; % 第二个频率成分
x = sin(2*pi*f1*t) + sin(2*pi*f2*t); % 信号
% 使用 stft 函数进行短时傅里叶变换
windowSize = 256; % 窗口大小
overlap = 128; % 重叠大小
nfft = 1024; % FFT 点数
[S, F, T] = stft(x, windowSize, overlap, nfft, fs); % 进行短时傅里叶变换
% 绘制三维图像
figure;
surf(T, F, 20*log10(abs(S)), 'EdgeColor', 'none'); % 绘制三维图像
axis tight;
view(0,90); % 设置视角
xlabel('Time (s)');
ylabel('Frequency (Hz)');
title('Short-Time Fourier Transform');
colorbar; % 添加颜色条
在这个示例中,我们首先生成一个包含两个频率成分的示例信号。然后,我们使用 stft 函数对该信号进行短时傅里叶变换,并获取频谱、频率和时间信息。最后,我们使用 surf 函数绘制三维图像,其中 x 轴表示时间,y 轴表示频率,z 轴表示幅度(以 dB 为单位)。
原文地址: https://www.cveoy.top/t/topic/vZO 著作权归作者所有。请勿转载和采集!