特征提取(时域、频域指标)

最后更新于:2024-04-07 21:25:59

一、代码运行环境

MATLAB2019a及更新版本。

二、程序介绍

注:图标代表该m文件为脚本文件,可以直接运行;图标代表函数文件,在没有输入变量的情况下无法直接运行。更详细的解释可以看这里

1.testGenFeaTF.m文件

特征提取函数genFeatureTF的测试文件,可以直接运行。程序运行完成后,在MATLAB的工作区,双击fea变量,可以查看求得的具体数值。

2.genFeatureTF.m文件

时频域信号特征提取函数。23种全都集中到一个封装函数里,只需要输入待提取数据、采样频率和特征类型,实现一行代码完成特征提取。

function fea = genFeatureTF(data,fs,featureNamesCell)                                           
% 时域、频域相关算法的信号特征提取函数
% 输入:
% data:待特征提取的时域信号,可以是二维数据,维度为m*n,其中m为数据组数,n为每组数据的长度。即每行数据为一组。行列方向不可出错
% fs:采样频率,如果不提取频域特征,fs值可以设置为1
% featureNamesCell:拟进行特征提取的特征名称,该变量为cell类型,其中包含的特征名称为字符串,特征名称需要在下边列表中:
% 目前支持的特征(2022.5.23,共23种):
% max :最大值
% min :最小值
% mean :平均值
% peak :峰峰值
% arv  :整流平均值
% var  :方差
% std  :标准差
% kurtosis  :峭度
% skewness  :偏度
% rms       :均方根
% waveformF :波形因子
% peakF     :峰值因子
% impulseF  :脉冲因子
% clearanceF:裕度因子
% FC:重心频率
% MSF:均方频率
% RMSF:均方根频率
% VF:频率方差
% RVF:频率标准差
% SKMean:谱峭度的均值
% SKStd:谱峭度的标准差
% SKSkewness:谱峭度的偏度
% SKKurtosis:谱峭度的峭度
% 
% 输出:
% fea:数据data的特征值数组,其特征值顺序与featureNamesCell一一对应

3.testGenFeaTF2D.m文件(完整版独有)

二维数据特征提取的测试文件,完整版代码中支持对二维数据(维度为m*n,其中m为数据组数,n为每组数据的长度。即每行数据为一组)进行特征提取计算。计算结果中每一行对应一组数据的特征结果。

三、快速开始

1.运行测试脚本

先在MATLAB里打开下载好的文件夹,然后运行testGenFeaTF.m程序,程序运行完毕后如果没报错,且工作区成功得到fea变量,则说明运行环境正常,程序正确。

2.导入数据

复制一个testGenFeaTF.m的文件副本,在这个副本里做如下修改:

根据你的文件类型的不同(excel,txt,csv等),将数据导入MATLAB的方法有所不同。同学们可以看博主针对常用文件的导入方法的这个教程,教程上未包含的数据类型,大家可以再参考这个文档

如果你已经实现了数据导入,这时候应该拥有了一个一维数据变量,这时候就可以调用函数进行特征提取了。

3.实现特征提取

参照testGenFeaTF.m文件中第二步,genFeatureTF函数的调用方法,根据实际采样频率和特征提取类型进行修改设置,运行程序即可。

四、关于完整版与公开版代码

功能完整版公开版
数据导入、参数设置、实现特征提取
软件全部源码(函数m文件)×
特征提取数据长度无限制200个点以内
二维数据特征提取(每一行为一组数据,同时分别对每组数据进行特征提取计算)×
支持的特征数量23种26种

五、获取公开版程序(需使用电脑浏览器打开)

时频域特征提取(公开版代码)

注:公开版代码需使用MATLAB2022a及以上版本

六、获取完整版程序(使用电脑浏览器或者手机浏览器打开)

获取通道一(淘宝):点击此处获取完整版程序

获取通道二(本页面):点击下面“立即支付”按钮,付款后获取完整版代码下载链接和售后联系方式~本通道处于测试阶段,使用该通道可以额外优惠(仅需38元)。付款完成后刷新一下本页面即可看到下载链接。

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

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

七、完整版代码重要更新

20230212 优化了代码,现在如果不提取谱峭度相关的特征,则不会再进行谱峭度计算,提高了程序计算效率。

20220913 (重要)添加了3个特征:med :中位数、rs :均方值、rmsa :方根幅值。

20220520 (重要)添加了四个特征: SKMean:谱峭度的均值、SKStd:谱峭度的标准差、SKSkewness:谱峭度的偏度、SKKurtosis:谱峭度的峭度

20220302 优化了二维特征提取的部分代码

20220224 修复了二维数据特征提取时提取少部分特征会报错的bug

20211206 优化部分代码,更好处理二维数据特征提取

20211204 (重要)1.修复了一维数据导入时为列向量会报错的bug;2.修复了低版本MATLAB打开程序中文字符出现乱码的bug;3.运算量大的特征如果没有选用将不再计算,大大提高程序运行效率。

20211121 修复了二维数据特征提取的部分bug

20211102 支持导入二维数据

20211031 (公开版代码所在版本)完成初版代码

八、常见问题