故障诊断数据预处理之1-D振动信号FFT变换后的2-D灰度图转换


前言

目前,基于数据驱动的故障诊断方法通常采用深度神经网络来挖掘采集数据中隐藏的信息,实现故障分类。然而,它们大多利用原始的一维时域信号作为DNN的输入进行学习。原始时域信号仅显示有限的信息,为了突出各种故障之间的差异,需要从对原始信号进行灰度化变为2-D灰度图进行分析。

一、转换原理

Fig. 1. 原始时域信号FFT变换后的灰度转换

步骤1.用长度为M^2的窗口和滑动步骤L滑动并在原始时域信号上分割样本,然后从原始时域信号中选择长度为M^2的振动信号样本。

步骤2.使用FFT将原始时域样本转换为频谱。实际上,为了便于图像转换,这里使用了与原始信号长度相同的双边频谱。

步骤3.规范化频谱样本数据。归一化的计算过程如下:

P(i)=\dfrac{(N(i)-Min(N))}{Max(N)-Min(N)}\times255, i=1,2,3,\ldots,M^2

步骤4.将长度为M的连续线段信号依次填充到构建图像的行中,以完成尺寸为M×M的灰度频谱图像的构建。

二、Matlab代码展示

clc
clear all;
I=xlsread('D:\SHUJUJI\数据汇总\fzbcd_2_5.xlsx')
djh=I(1,1:4096);   % 样本长度为4096
N=length(djh);  % 信号长度(变量)
Fs=20000;  % 采样频率
dt=1/Fs;  % 采样间隔
t=[0:N-1]*dt;  % 时间序列
djh=[djh,zeros(1,N-4096)];  % 原始信号的值序列
% FFT分析
NN=N;  % 执行100点FFT
XN=fft(djh,NN)/NN;  % 共轭复数,具有对称性
f0=1/(dt*NN);  % 基频

f=[0:ceil((NN-1))]*f0;  % 频率序列
A=abs(XN);  % 幅值序列
fuzhi=2*A(1:ceil((NN-1))+1);

%%%%%   频谱图 1-D 转化为2-D;
% (1)fft变换频谱图
minP=min(fuzhi);
maxP=max(fuzhi);
T1 = reshape(fuzhi,[64,64]);  % 后续灰度图长宽为64
C =T1';
for i=1:64
    for j=1:64
        C(i,j)=round(((C(i,j)-minP)*255)/(maxP-minP));           
    end
end
Im1=mat2gray(C);
imshow(Im1,'border','tight','initialmagnification','fit');
set (gcf,'Position',[0,0,250,250]);
axis normal;
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值