短时傅里叶变换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元)。付款完成后刷新一下本页面即可看到下载链接。

(注意支付跳转失败的话,请使用浏览器打开本页面)

您需要先支付 26元 才能查看此处内容!立即支付

七、完整版代码重要更新

20231117 代码初始版本(公开版所在版本)

八、常见问题