滚动轴承数据导入与导出问题首先我们采用的数据来源于有很多,例如:美国凯斯西储大学的数据、辛辛那提大学的数据、NASA公开数据等。我们对采集的信号进行故障诊断时的第一步问题就是如何把现有的庞大数据导入到Matlab里面进行分析呢?我们这里采用辛辛那提大学的作为常规例子给大家详细讲解。首先我们使用公开数据要充分了解使用该数据的具体信息和内容,试验平台是什么样子,都由哪些部分组成,传感器的安装位置在哪?采集的是哪个轴承上的数据?我们都需要了解清楚,否则会造成后期的数据混乱,这一步是非常关键的。辛辛那提大学的试验台如图所示:此实验台由电机驱动4个轴承工作,因为该试验平台进行测试的是滚动轴承全生命周期的试验,传感器分别安装在滚动轴承的横向和纵向。通过8个采集通道采集数据。采样率是20KHz,采样间隔时间为10min,一次采样共20480个数据点。最后一直运行到滚动轴承失效。采用第一组测试数据,共采集了34天,共有2156个文件,轴承3发生内圈缺陷,轴承4发生滚动体缺陷。(a)轴承3内圈缺陷(b)轴承4滚动体缺陷。8个采集通道对应A、B、C、D、E、F、G、H,其中A、B对应的是轴承1的X向和Y向的采集信息。以此类推对应4个轴承的采集信息。我们要对滚动轴承全生命周期性能衰退过程进行分析,拿其中轴承3的内圈故障进行衰退过程作为例子进行分析。我们只需提取轴承3所对应的采集通道E、F的振动信息即可,无论是使用X向还是Y向的信息,我们都可以明确的诊断出轴承3的衰退过程,因此我们选择其中一组信息作为衰退预测的数据。提取2156个文件中的E这一列的数据信息,按照时间排列起来。由于文件个数较多,手动导入信息量庞大,因此我们采用matlab对其进行编程,给文件命名并让名字循环读入,进而读取改文件的具体信息。最后把文件全部导入并合成一个矩阵。如果我们采用整体全部的数据,需要花费的时间相对较长,这里可以根据个人的需求对数据进行调整处理,由于一个文件中就含有20480个数据,我们可以对数据进行等间隔取数据,比如一个文件中我只选取1000个数据作为后期的输入数据。或者随机选取有代表性的数据作为输入数据,根据具体情况具体自行选择。我采用的是对每组数据作均值处理,一个文件仅仅选择了一个数据来代表,由于时间间隔较短,而我们关注的重点是滚动轴承整个生命运行过程中的衰退趋势的变化,因此不会产生较大影响。由于文件不是标准格式,首先我们要进行数据标准化,都变成excel文件,方便后期matlab数据的读入。文件循环导入的具体代码如下:cd('D:\ProgramFiles\MATLAB\1')%文件所在文件夹。dat=struct2cell(dir);%建立文件夹的树结构fori=1:length(dat)-2%减去2是由dos文件夹的组织决定的,这里不做解释data{i}=importdata(dat{1,i+2});%使用元胞数组存储各文件中的内容。endfork=1:ifilename=['kms11.22',num2str(k),'.xls'];xlswrite(filename,data{k},'Sheet1')endims10_22.12.06---------ims10_22.15.37前43组数据每5min记录一次ims10_22.15.44---------ims10_23.00.14532003.10.23.00.24-----2003.10.23.10.14ims10_230014602003.10.29.14.39-----2003.10.31.10.09ims10_230014601402003.10.31.12.05-----2003.11.01.23.51ims10_230014601402162003.11.3ims11_31000282003.11.07.14.51-----2003.11.10.07.55ims11_714513022003.11.10.08.05-----2003.11.10.16.25ims11_714513021512003.11.14.11.02-----2003.11.15.23.58ims11_1411022202003.11.16.00.08------2003.11.18.19.12ims11_1411022203222003.11.19.09.06------2003.11.21.23.56jms11_192992003.11.22.00.06------2003.11.25.23.39kms11.22422数据读取进来后,我们另存为excel数据文件,执行如下程序,实现每个文件的循环读取,把故障数据单独提取出来,并存入一个矩阵中,输出excel文件或者.m文件。filename1=ls('D:\ProgramFiles\MATLAB\4\rms2016\*.xls');filename=cellstr(filename1);num=length(filename);M=[];fori=1:numm=xlsread(filename{i});M=[Mm];endN=8*num;T=10*num;A1=rms(M);b1=A1(5:8:N);xlswrite('RMS70.xls',b1,'sheet1')