1 简介
在工业生产中,机械设备的正常,安全运行意义重大,为了能使故障发生在萌芽期,寻找一种实时,预测,预报的故障诊断方法极其重要.FFT是一种成熟的信号处理方法,用该方法提取机械设备的振动信号,可以做到可靠性高,实时性强等特点.
2 完整代码
%% 提取FFT谱作为故障特征向量
clc;close all;clear
%%
load data_process
%% 2、加载数据
x1=train_X(1,:);
% 采样点
L=length(x1);
%采样频率
fs=48000;
%采样间隔
Ts=1/fs;
%采样点数
t=Ts:Ts:L*Ts;
%轴承信号
% 3、对原始信号作图
figure
plot(t,x1)
title('原始信号')
xlabel('采样点/n')
ylabel('幅值')
% 4、fft频谱
Y = fft(x1);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
f = fs*(0:(L/2))/L;
figure
bar(f,P1)
title('FFT频谱')
xlabel('频率/Hz')
ylabel('幅值')
%% 训练集
TZ=[];
for IIII=1:size(train_X,1) %依次对每个样本进行处理
x1=train_X(IIII,:);%轴承信号
Y = fft(x1);
L=length(x1);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
TZ(IIII,:)=P1/max(P1);
end
disp('训练集提取完毕')
train_X=TZ;
%% 验证集
TZ=[];
for IIII=1:size(valid_X,1) %依次对每个样本进行处理
x1=valid_X(IIII,:);%轴承信号
Y = fft(x1);
L=length(x1);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
TZ(IIII,:)=P1/max(P1);
end
disp('验证集提取完毕')
valid_X=TZ;
%% 测试集
TZ=[];
for IIII=1:size(test_X,1) %依次对每个样本进行处理
x1=test_X(IIII,:);%轴承信号
Y = fft(x1);
L=length(x1);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
TZ(IIII,:)=P1/max(P1);
end
disp('测试集提取完毕')
test_X=TZ;
%% 输入数据归一化
% [xs,mapping]=mapminmax(train_X',-1,1);train_X=xs';
% xs=mapminmax('apply',valid_X',mapping);valid_X=xs';
% xs=mapminmax('apply',test_X',mapping);test_X=xs';
%% 保存结果
save data_feature train_X valid_X test_X train_Y valid_Y test_Y
3 仿真结果
4 参考文献
[1]杨旭霞, 张毅, 张鹏. 基于FFT分析振动信号的机械故障诊断[J]. 山西电子技术, 2015(2):2.