短时傅里叶变换STFT画图代码
最后更新于:2024-04-07 21:23:27
一、代码运行环境
MATLAB2019a及更新版本。
二、程序介绍
注:图标代表该m文件为脚本文件,可以直接运行;图标代表函数文件,在没有输入变量的情况下无法直接运行。更详细的解释可以看这里。
1.demoSTFT.m文件
短时傅里叶变换画图函数pSTFT2D.m、pSTFT3D.m的测试脚本文件,其中有代码调用的演示案例。
文件可以直接运行。程序运行完成后,将会画出如下图像:
2.pSTFT2D.m文件
这个函数计算给定信号的短时傅里叶变换(STFT),并绘制结果的二维图像。
代码说明:
function stftData = pSTFT2D(data, Fs, windowType, windowSize, overlap, FFTLength)
% pSTFT2D - 绘制STFT的二维图形
% 这个函数计算给定信号的短时傅里叶变换(STFT),并绘制结果的二维图像。
%
% 输入:
% data - 待分析数据,一维信号数组。
% Fs - 采样频率,单位为Hz。
% windowType - 窗口函数的句柄,例如 @hann 或 @hamming。更多关于窗的介绍可以看这里:https://ww2.mathworks.cn/help/signal/ug/windows.html
% 这指定了STFT中使用的窗口类型。
% windowSize - 窗口大小,以样本数为单位。
% 这决定了每个STFT窗口包含的样本数。
% overlap - 窗口重叠大小,以样本数为单位。
% 这指定了相邻窗口之间的重叠样本数。
% FFTLength - 在每个窗口上执行FFT的点数。
% 这可以影响频率分辨率和STFT的计算负荷。
% 输出:
% stftData为STFT的计算结果
3.pSTFT3D.m文件
此函数计算给定信号的短时傅里叶变换(STFT),并绘制结果的三维图像。
代码说明:
function stftData = pSTFT3D(data, Fs, windowType, windowSize, overlap, FFTLength)
% pSTFT3D - 绘制STFT的三维图形
% 此函数计算给定信号的短时傅里叶变换(STFT),并绘制结果的三维图像。
%
% 输入:
% data - 待分析数据,一维信号数组。
% Fs - 采样频率,单位为Hz。
% windowType - 窗口函数的句柄,例如 @hann 或 @hamming。更多关于窗的介绍可以看这里:https://ww2.mathworks.cn/help/signal/ug/windows.html
% 这指定了STFT中使用的窗口类型。
% windowSize - 窗口大小,以样本数为单位。
% 这决定了每个STFT窗口包含的样本数。
% overlap - 窗口重叠大小,以样本数为单位。
% 这指定了相邻窗口之间的重叠样本数。
% FFTLength - 在每个窗口上执行FFT的点数。
% 这可以影响频率分辨率和STFT的计算负荷。
%
% 输出:
% stftData为STFT的计算结果
三、快速开始
1.运行测试脚本
先在MATLAB里打开下载好的文件夹,然后运行demoSTFT.m程序,程序运行完毕后如果没报错,且正常画出上述图像,则说明运行环境正常,程序正确。
2.修改仿真数据/导入数据
复制一个demoSTFT.m的文件副本,在这个副本里做如下修改:
(1)第一种情况,你可能想要对你自己要研究的仿真数据进行滤波测试,此时你需要对 demoWPT.m 脚本文件中的第1小节内容进行修改替换即可。需要注意的是,请最好保持变量名的一致,即将待分析信号命名为data,为一维数据。此时数据替换完成。
(2)第二种情况,你可能是想对一段真实采集的数据进行滤波,此时需要根据你的文件类型的不同(excel,txt,csv等),将数据导入MATLAB的方法有所不同。同学们可以看博主针对常用文件的导入方法的这个教程,教程上未包含的数据类型,大家可以再参考这个文档。导入完成后请将这个待分析信号命名为data。
3.实现STFT
参照脚本文件中第二步,根据需要调整相关参数。
运行程序即可。
四、关于完整版与公开版代码
功能 | 完整版 | 公开版 |
数据导入、参数设置、实现滤波 | √ | √ |
软件全部源码(函数m文件) | √ | × |
画图水印 | 有水印 | 无水印 |
可分析数据长度 | 无限制 | 300个点以内 |
五、获取公开版程序(需使用电脑浏览器打开)
STFT公开版代码V2
注:公开版代码需使用MATLAB2022a及以上版本
六、获取完整版程序(使用电脑浏览器或者手机浏览器打开)
获取通道一(淘宝):点击此处获取完整版程序
获取通道二(本页面):点击下面“立即支付”按钮,付款后获取完整版代码下载链接和售后联系方式~本通道处于测试阶段,使用该通道可以额外优惠(仅需26元)。付款完成后刷新一下本页面即可看到下载链接。
(注意支付跳转失败的话,请使用浏览器打开本页面)
七、完整版代码重要更新
20231117 代码初始版本(公开版所在版本)
八、常见问题
无