function feature_tim = extract_timfeature(sample_data)
%时域特征提取
%版本:22/03/21 copyright:Mr吴
% 输入参数:
% sample_data:样本 (w,f)w取决于滑窗宽度,f取决于数据维数
% 输出参数:
% feature_tim:时域特征
%% 三轴时域信息提取
max_data = max(sample_data); %最大值
min_data = min(sample_data); %最小值
% median_data = median(sample_data); %中位数
mean_data = mean(sample_data); %平均值
pk_data = max_data - min_data; %峰差
avg_data = mean(abs(sample_data)); %整流平均值_绝对值的平均值
var_data = var(sample_data); %方差
sd_data = std(sample_data); %标准差
% ku_data = kurtosis(sample_data); %峭度
% sk_data = skewness(sample_data); %偏度
rm_data = rms(sample_data); %均方根
feature_tim(1,:)=max_data;
feature_tim(2,:)=min_data;
feature_tim(3,:)=mean_data;
%% 可单轴输出或三轴特征再融合
%% X轴时域 可单轴输出或三轴特征再融合
% x_max = max_data(1);
% x_min = min_data(1);
% x_median = median_data(1);
% x_mean = mean_data(1);
% x_pk = pk_data(1);
% x_avg = avg_data(1);
% x_var = var_data(1);
% x_sd = sd_data(1);
% x_ku = ku_data(1);
% x_sk = sk_data(1);
% x_rm = rm_data(1);
% x_S = x_rm / x_avg; %均方根因子
% x_C = x_pk / x_rm; %峰值因子
% x_I = x_pk / x_avg; %脉冲因子
% x_xr = mean(sqrt(abs(sample_data(1))))^2;
% x_L = x_pk/ x_xr; %裕度因子
function feature_fre = extract_frefeature(sample_data,fs)
%频域特征提取
%版本:22/03/21 copyright:Mr吴
% 输入参数:
% sample_data:样本 (w,f)w取决于滑窗宽度,f取决于数据维数
% fs:数据点数,将用于fft,需要是2的n次方,(256、512、1024)
% 输出参数:
% feature_fre:频域特征
%% 三轴数据FFT
fft_data= fft(sample_data,fs);
N = length(fft_data); %fft采样点数
fft_data=fft_data(1:128,:);
fft_amp = abs(fft_data); %振幅(幅频特性)
% subplot(2,1,1);
% plot(fft_amp);
% % stem(fft_amp(1:128,:));
% title('频域波形');
% fft_phase = angle(fft_data); %相频特性
% subplot(2,1,2);
% plot(fft_phase);
% title('相频特性图')
amp_max = max(fft_amp); %振幅最大值
amp_min = min(fft_amp); %振幅最小值
amp_median = median(fft_amp); %振幅中位数
amp_mean = mean(fft_amp); %振幅平均值
amp_pk = amp_max - amp_min; %振幅峰差
amp_mph = amp_pk * 0.6; %振幅峰值阈值,阈值为75%的振幅峰差
%[amp_pkfs,amp_pks] = findpeaks(fft_amp,'minpeakheight',amp_mph);%振峰捕获函数
%amp_pkfs = amp_pkfs / N * fs/2;
amp_pks=[;] ; %振幅峰值
amp_pkfs=[;]; %振幅峰值对应的频率
for j=1:3
k=1;
for i = 1:(N/2)
if amp_mph < fft_amp(i,j)
amp_pks(k,j) = fft_amp(i);
amp_pkfs(k,j)= i / N * fs / 2;
k=k+1;
end
end
end
avg_fs = 1:128;
avg_fs =avg_fs';
avg_fft = 2 * fft_amp / N;
amp_fc=zeros(1,3);
amp_msf=zeros(1,3);
amp_rmsf=zeros(1,3);
amp_vf=zeros(1,3);
amp_rvf=zeros(1,3);
for i=1:3
amp_fc(i) = sum(avg_fs .* avg_fft(:,i)) / sum(avg_fft(:,i) ); %重心频率
amp_msf(i) = sum(avg_fs.^2 .* avg_fft(:,i)) / sum(avg_fft(:,i)); %均方频率
amp_rmsf(i) = sqrt(amp_msf(i)); %均方根频率
amp_vf(i) = sum((avg_fs - amp_fc(i)).^2 .* avg_fft(:,i)) / sum(avg_fft(:,i)); %频率方差
amp_rvf(i) = sqrt(amp_vf(i)); %频率标准差
end
%% 查看变量
if 0
amp_fc
amp_msf
amp_rmsf
amp_vf
amp_rvf
end
feature_fre(1,:)=amp_max;
feature_fre(2,:)=amp_mean;
可以根据自己的需要添加返回特征;
这两个函数的输入: 输入“学习笔记(2)”中滑窗采样的样本,维度:滑窗宽度×数据维数×1