时域特征值提取的MATLAB代码实现(均方根、峰值因子、脉冲因子、裕度因子、峭度因子、波形因子和偏度等)

时域计算代码相对简单,下列代码主要来自求助matlab时域分析程序-峰值、均方根、裕度、峭度_百度知道。不过原文中求“峭度因子”的方法不对,即“Kr = sum(y.^4)/sqrt(sum(y.^2)))”,求峭度直接用函数kurtosis就行。

%x=0:0.1:2*pi;
%y=sin(x);			%信号
y=normrnd(600,1,1000,1);   %生成平均值为600,标准差为1的1000*1的矩阵
plot(y);
ma = max(y); 			%最大值
mi = min(y); 			%最小值	
me = mean(y); 			%平均值
pk = ma-mi;			%峰-峰值
av = mean(abs(y));		%绝对值的平均值(整流平均值)
va = var(y);			%方差
st = std(y);			%标准差
ku = kurtosis(y);		%峭度
sk = skewness(y);               %偏度
rm = rms(y);			%均方根
S = rm/av;			%波形因子
C = pk/rm;			%峰值因子
I = pk/av;			%脉冲因子
xr = mean(sqrt(abs(y)))^2;
L = pk/xr;			%裕度因子

原始信号为平均值为600,标准差为1的数列:

计算结果为:

关于均方根、峰值因子、脉冲因子、裕度因子、峭度因子、波形因子和偏度等概念的理解可以参考我之前的文章信号的各种时域分析方法的理解(峰值因子、脉冲因子、裕度因子、峭度因子、波形因子和偏度等)

附:特征提取的MATLAB代码快速实现

笔者最近在做这样一件事情。由于搞科研写论文时,对特征提取的需要往往是集中性的、多种类的、需求各异的,所以我把常用的特征值指标:

有量纲特征值8个——最大值、最小值、峰峰值、均值、方差、标准差、均方值、均方根值(RMS)

无量纲特征值6个——峭度、偏度、波形因子、峰值因子、脉冲因子、裕度因子

频域特征值5个——重心频率、均方频率、均方根频率、频率方差、频率标准差 (熵相关特征若干——这个后续补充。还会有其他常用、不常用的特征指标)

以上19种全都集中到一个封装函数里,实现一行代码完成特征提取。

比如提取数据“波形因子”就可以像这样写:

fea = genFeature(data,{'waveformF'}) %对data数据求波形因子

如果提取数据“最大值、最小值、峰峰值、均值、方差、标准差、均方值...”这全部19种特征,就可以这样写:

fea =genFeature(data,{'max','min','mean','peak','arv','var','std','kurtosis','skewness', 'rms','waveformF','peakF','impulseF','clearanceF'})%对data数据求波形因子

也就是说需要提取哪个特征,在函数中直接指定就可以了。输出的fea变量里就会得到相应的这些特征值,顺序也是与输入的排序保持一致的。

这个函数的介绍如下:

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

需要上边这个函数文件以及测试代码的同学,可以在下述链接中获取:

时域、频域特征提取MATLAB代码

这个函数会持续更新,有哪些想要加进去的特征指标,同学们可以在评论区留言,笔者会考虑纳入到这个“特征提取指标全家桶”中。

文章如要转载请私信与我联系,并注明来源知乎专栏与信号处理有关的那些东东作者Mr.括号。

  • 52
    点赞
  • 430
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论
时域特征提取是通过分析信号在时间域上的特性来获取有关信号的信息。在Matlab中,可以使用不同的方法和函数来提取时域特征。其中,常见的时域特征包括峰值方根裕度峭度偏度方根等。可以使用Matlab的函数如max、min、mean、var、std、kurtosis、skewness、rms等来计算这些特征。例如,使用max函数来计算信号的最大值,使用mean函数来计算信号的平值,使用var函数来计算信号的方差,使用std函数来计算信号的标准差,使用kurtosis函数来计算信号的峭度,使用skewness函数来计算信号的偏度,使用rms函数来计算信号的方根等。通过这些函数计算得到的特征值可以用于信号分析和处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [时域和频域特征提取Matlab编程实例.docx](https://download.csdn.net/download/m0_71272694/85999880)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [时域特征值提取MATLAB代码实现方根峰值因子脉冲因子裕度因子峭度因子波形因子偏度等)](https://blog.csdn.net/fengzhuqiaoqiu/article/details/101153320)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.看海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值