matlab 实现数据时域特征提取

%数据时域特征提取
clc;
close ;
clear all;
%数据导入
data=xlsread('E:\排球\原始数据 z方向.xlsx',1)';
%初始参数设置
[m,n]=size(data);
D=[];
DA=[];
%求解特征
for i=1:1:m
    d=data(i,:)
    d=d(~isnan(d));%去除NAN值 
    ave=mean(d);%均值
    u=std(d);%标准差
    time=length(d);%时间
    theta=var(d);%方差
    area=sum(abs(d));%面积
    maxv=max(d);%最大值
    minv=min(d);%最小值
    [dd,minp,maxp]=premnmx(d);  %求解信息熵
    entropy=yyshang(dd,9);%信息熵
    D=[D;ave;maxv;minv;u;area;time;theta;entropy];
    DA=[DA,D];
    D=[];
end
DA=DA';

其中yyshang是求解熵的函数,代码如下

function Hx=yyshang(y,duan)
%不以原信号为参考的时间域的信号熵
%输入:maxf:原信号的能量谱中能量最大的点
%y:待求信息熵的序列
%duan:待求信息熵的序列要被分块的块数
%Hx:y的信息熵
%duan=10;%将序列按duan数等分,如果duan=10,就将序列分为10等份
x_min=min(y);
x_max=max(y);
maxf(1)=abs(x_max-x_min);
maxf(2)=x_min;
duan_t=1.0/duan;
jiange=maxf(1)*duan_t;
% for i=1:10
% pnum(i)=length(find((y_p>=(i-1)*jiange)&(y_p<i*jiange)));
% end
pnum(1)=length(find(y<maxf(2)+jiange));
for i=2:duan-1
    pnum(i)=length(find((y>=maxf(2)+(i-1)*jiange)&(y<maxf(2)+i*jiange)));
end
pnum(duan)=length(find(y>=maxf(2)+(duan-1)*jiange));
%sum(pnum)
ppnum=pnum/sum(pnum);%每段出现的概率
%sum(ppnum)
Hx=0;
for i=1:duan
    if ppnum(i)==0
        Hi=0;
    else
        Hi=-ppnum(i)*log2(ppnum(i));
    end
    Hx=Hx+Hi;
end
end

 

 

 

 

 

  • 14
    点赞
  • 173
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
以下是一种基于时域特征提取MATLAB 代码示例,用于识别轴承故障: ```matlab % 轴承故障时域特征提取代码示例 % 导入数据 data = load('bearing_data.mat'); x = data.x; fs = data.fs; % 设置参数 window_size = 2048; % 窗口大小 overlap_ratio = 0.5; % 重叠比例 nfft = 2^nextpow2(window_size); % FFT 点数 % 计算窗口移动步长 step_size = window_size*(1-overlap_ratio); % 初始化特征向量 features = []; % 按照窗口移动步长进行分帧处理 for i = 1:step_size:length(x)-window_size % 取出当前窗口数据 window = x(i:i+window_size-1); % 计算时域特征 rms_value = rms(window); % 均方根值 peak_to_peak = max(window)-min(window); % 峰峰值 kurtosis_value = kurtosis(window); % 峭度 skewness_value = skewness(window); % 偏度 crest_factor = peak_to_peak/rms_value; % 波峰因子 shape_factor = rms_value/mean(abs(window)); % 波形因子 % 将特征向量添加到特征矩阵中 features = [features; rms_value peak_to_peak kurtosis_value skewness_value crest_factor shape_factor]; end % 显示特征矩阵 disp(features); ``` 该代码将输入数据 x 按照窗口大小和重叠比例进行分帧处理,并针对每一帧计算均方根值、峰峰值、峭度、偏度、波峰因子和波形因子等时域特征,并将这些特征作为一行添加到特征矩阵 features 中。最后,特征矩阵将输出到 MATLAB 命令窗口中。可以根据实际需求对这些特征进行进一步处理和分析,用于轴承故障的诊断和监测。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值