主要内容

采用Simu万博1manbetxlink生成故障数据

此示例演示如何使用Simulink模型生成故障和健康数据。利用故万博1manbetx障和健康数据开发状态监测算法。该示例使用了一个传动系统,并对一个轮齿故障、一个传感器漂移故障和轴磨损故障进行了建模。

传输系统模型

传输壳体模型使用Simscape Driveline块来模拟简单的传输系统。传动系统由扭矩驱动,驱动轴,离合器和连接到输出轴的高齿轮组成。

mdl=“PDM传输”; 开放式系统(mdl)

变速箱系统包括一个监测壳体振动的振动传感器。套管模型将轴角位移转换为套管上的线性位移。将壳体建模为质量弹簧阻尼系统,并从壳体测量振动(壳体加速度)。

Open_System([MDL“/套管”])

断层建模

传动系统包括用于振动传感器漂移,齿轮齿断层和轴磨损的故障模型。通过在传感器模型中引入偏移来易于建模传感器漂移故障。偏移量由模型变量控制SDrift, 注意SDrift=0表示没有传感器故障。

Open_System([MDL“/带漂移的振动传感器”])

轴磨损故障由变量子系统建模。在这种情况下,子系统变型会改变轴阻尼,但变型子系统可用于完全改变轴模型实现。所选变量由模型变量控制沙弗韦尔, 注意ShaftWear=0意味着没有轴断层。

Open_System([MDL“/轴”])

开放式系统([mdl,'/轴/输出轴'])

轮齿故障是由在驱动轴的旋转固定的位置注入扰动转矩建模。轴位置以弧度测量并且当轴位置是围绕0的小窗口内的干扰力被施加到该轴上。干扰的大小由模型变量控制牙齿屁股, 注意ToothFaultGain = 0表示没有齿轮齿故障。

模拟故障和健康数据

传输模型配置有变量,可控制三种不同故障类型,传感器漂移,齿轮齿和轴磨损的存在和严重程度。通过改变模型变量,SDrift牙齿屁股,及沙弗韦尔,您可以为不同故障类型创建振动数据。使用数组万博1manbetxsimulink.simulationInpul.对象来定义许多不同的模拟场景。例如,为每个模型变量选择一个值数组,然后使用ndgrid.功能创建一个万博1manbetxsimulink.simulationInpul.对于模型变量值的每个组合。

牙齿arrawaray = -2:2/10:0;%齿故障增益值传感器漂移阵列=-1:0.5:1;%传感器漂移偏移值Shaftwearray=[0-1];%适用于驱动轴条件的变型%创建一个n维数组,其中包含所有值的组合[牙齿值,SensoldriftValues,Shaftwearvalues] =...ndgrid(Toothfaultarray,Sensordriftarray,Shaftweararray);为了CT = NUM​​EL(牙齿虚假值): -  1:1%为值的每个组合创建S万博1manbetximulink.SimulationInputsiminput=Si万博1manbetxmulink.SimulationInput(mdl);%修改模型参数siminput = setVariable(siminput,“牙缝增益”,牙齿ultvalues(CT));siminput = setVariable(siminput,“SDrift”,sensorDriftValues(CT));siminput = setVariable(siminput,'shaftwear',shaftWearValues(ct));%收集阵列中的模拟输入GridSimulationInput(CT)= Siminput;结尾

同样,为每个模型变量创建随机值的组合。确保包括0.值使得只有表示三个故障类型的子集的组合。

RNG('默认');%重置随机种子以进行再现性toothFaultArray = [0 -rand(1,6)]。%齿故障增益值传感器漂移阵列=[0随机数(1,6)/8];%传感器漂移偏移值Shaftwearray=[0-1];%适用于驱动轴条件的变型%创建一个n维数组,其中包含所有值的组合[牙齿值,SensoldriftValues,Shaftwearvalues] =...ndgrid(Toothfaultarray,Sensordriftarray,Shaftweararray);为了ct=numel(齿故障值):-1:1%为值的每个组合创建S万博1manbetximulink.SimulationInputsiminput=Si万博1manbetxmulink.SimulationInput(mdl);%修改模型参数siminput = setVariable(siminput,“牙缝增益”,牙齿ultvalues(CT));siminput = setVariable(siminput,“SDrift”,sensorDriftValues(CT));siminput = setVariable(siminput,'shaftwear',shaftWearValues(ct));%收集阵列中的模拟输入RandomSimulationInput(CT)= Siminput;结尾

用数组万博1manbetxsimulink.simulationInpul.定义的对象使用生成仿制性运行模拟的功能。这生成仿制性函数配置模型以将日志数据保存到文件,使用时间线格式进行信号记录并存储万博1manbetxsimulink.simulationInpul.保存的文件中的对象。这个生成仿制性函数返回一个状态标志,指示模拟是否已成功完成。

上面的代码从网格化变量值和98.从随机变量值的仿真输入给出了208个总模拟。并行运行这208个模拟可以在标准桌面上取得多达两个小时或更长时间,并生成大约10GB的数据。为方便起见提供了仅运行前10个模拟的选项。

%运行仿真并创建集成以管理仿真结果如果~exist(完整文件(pwd),'数据'),'dir')mkdir(完整文件(pwd),'数据')))%创建用于存储结果的目录结尾runall = true;如果符号[确定,e] =生成umulationsemble([gridsimulationInput,landomsimulationInput],...完整文件(pwd,'数据'),'使用指平行',对);别的[确定,E] = generateSimulationEnsemble(gridSimulationInput(1:10),完整文件(PWD,'数据'));%#好的<*UNRCH>结尾
[28-Feb-2018 13:17:31]检查平行池的可用性... [28-Feb-2018 13:17:37]加载Simulink在并行工人身上...分析和将文件转移到工人。万博1manbetx。完毕。[28-FEB-2018 13:17:56]配置并行工人的模拟缓存文件夹...... [28-FEB-2018 13:17:57]在并行工人上运行Setupfcn ... [28-Feb-2018 13:18:01]加载平行工人的模型... [28-FEB-2018 13:18:02]将模型中使用的基础工作空间变量转移到平行工人... [28-2月 -  2018 13:18:07]运行模拟...... [28-2月 -  2018年13:18:29]在208个模拟运行中完成了1个中的1个[28-Feb-2018 13:18:29] 208个模拟运行中的2个[28-2月13日13:18:30]完成了208次模拟运行中的3个中的3个[28-Feb-2018 13:24:22] 204个仿真运行中的204个[28-Feb-2018 13:24:28]完成了205次模拟运行[28-FeB-2018 13:24:28]完成了206个仿真运行中的206次[28-FeB-2018 13:24:28]完成了207个的208个模拟运行[28-Feb-2018 13:24:29]完成208公中仿真运行[28-FEB-2018 13:24:33]清理平行工人......

生成仿制性跑并记录了模拟结果。使用仿真集合来处理和分析模拟结果的使用模拟训练数据存储指挥部。

ex = simulationensembledataStore(fullfile(pwd,'数据'));

处理仿真结果

模拟训练数据存储命令创建了一个指向模拟结果的合奏对象。使用合奏对象准备和分析集合的每个成员中的数据。“合奏对象”列出了集合中的数据变量,默认情况下,选择所有变量进行读取。

奴隶
ens=SimulationnSembleDatastore,其属性为:DataVariables:[6×1字符串]独立变量:[0×0字符串]条件变量:[0×0字符串]SelectedVariables:[6×1字符串]nummbers:208 LastMemberRead:[0×0字符串]
ens.SelectedVariables
ans =.6×1字符串数组“SimulationInput”“SimulationMetadata”“Tacho”“振动”“xFinal”“xout”

分析只读振动测速仪信号和万博1manbetxsimulink.simulationInpul.。这万博1manbetxsimulink.simulationInpul.具有用于仿真的模型变量值,用于为集合成员创建故障标签。使用合奏阅读命令获取合奏构件的数据。

ens.SelectedVariables=[“振动”“测速”“模拟输入”]; 数据=读取(ens)
数据=1×3表振动测速仪模拟投入量万博1manbetx

从返回的数据中提取振动信号并进行绘图。

振动=数据。振动{1};绘图(振动、时间、振动、数据)标题('振动')伊拉贝尔('加速'

仿真的前10秒包含传输系统启动的数据;用于分析丢弃此数据。

idx=振动。时间>=秒(10);振动=振动(idx,:);振动时间=振动时间-振动时间(1);

测速仪信号包含用于驱动器和负载轴的旋转的脉冲,但分析,具体地是同步平均,需要轴旋转的时间。以下代码丢弃了前10秒的前10秒测速仪数据并在中查找轴旋转时间快速

tacho = data.tacho {1};idx = tacho.time> =秒(10);tacho = tacho(idx,:);plot(tacho.time,tacho.data)标题(“测速脉冲”)传奇(“驱动轴”“负载轴”%负载轴旋转比驱动轴慢

idx=diff(测速数据(:,2))>0.5;转速表=转速表时间(查找(idx)+1)-转速表时间(1)
tohepulses =8×1持续时间阵列2.8543 SEC 6.6508秒10.447秒244秒24.04秒21.837秒25.634秒29.43秒

万博1manbetxsimulink.simulationInput.variables.属性包含用于模拟的故障参数的值,这些值允许我们为每个集合成员创建故障标签。

vars = data.simulationInput {1} .variables;idx = strcmp({vars.name},“SDrift”);如果任何(idx)sF=abs(变量(idx).值)>0.01;%小漂移值不是故障别的sf = false;结尾idx = strcmp({vars.name},'shaftwear');如果任何(IDX)SV = vars(IDX).value <0;别的sv = false;结尾如果任何(IDX)IDX =的strcmp({vars.Name}“牙缝增益”); sT=绝对值(变量(idx).值)<0.1;%小齿故障值不是故障别的sT=假结尾FaultCode = SF + 2 * SV + 4 * ST;%用于捕获不同故障条件的故障代码

处理后的振动和转速计信号以及故障标签将添加到集合中,以供以后使用。

sdata =表({vibration},{tachpulses},sf,sv,st,Fairfcode,...“变化无常”,{'振动''TachoPulses''sensordrift''shaftwear'“牙错”'affactcode'})
sdata =1×6表振动测速仪传感器漂移轴轮齿故障代码
ens.DataVariables = [ens.DataVariables;“TachoPulses”];

合奏ConditionVariables属性可用于识别包含条件或故障标签数据的集合中的变量。设置属性以包含新创建的故障标签。

ens.conditionVariables = [“sensordrift”“shaftwear”“牙齿”“故障代码”];

上面的代码用于处理集合的一个成员。要处理上面的代码的所有合奏成员转换为函数使用合奏哈迪塔命令使用循环应用致全体团员。通过对集合进行分区并并行处理集合分区,可以并行处理集合成员。

重置(ens)runlocal = false;如果runLocal%处理集合中的每个成员虽然hasdata(ens)数据=读取(ens);addData =预备数据(数据);WriteTolastMemberRead(ex,adddata)结尾别的%将集成拆分为多个分区,并并行处理每个分区n=百分比(ens,gcp);议案ct = 1:n sumens = partition(ens,n,ct);虽然hasdata(subens)数据=读(subens);addData =预备数据(数据);writeToLastMemberRead(subens的话,addData)结尾结尾结尾

使用该集合的每个第10个成员的振动信号绘制哈迪塔阅读用于提取振动信号的命令。

重置(ens)ens.SelectedVariables=“振动”;图,ct = 1;虽然hasdata(ens)数据=读取(ens);如果mod(ct,10)== 0振动= data.vibration {1};绘图(振动.time,vigation.data)保持在…上结尾ct=ct+1;结尾抓住标题(“振动信号”)伊拉贝尔('加速'

分析模拟数据

现在,数据已被清理和预处理,数据已准备好提取特征,以确定用于分类不同故障类型的特征。首先配置集合,使其仅返回已处理的数据。

ens.SelectedVariables=[“振动”“TachoPulses”];

对于组合中的每个成员计算许多基于时间和频谱的功能。这些包括信号统计,例如信号均值,方差,峰值,峰值,非线性信号特性,例如近似熵和Lyapunov指数,以及诸如振动信号的时间同步平均值的峰值频率的光谱特征以及振动信号的功率时间同步平均包络信号。这分析数据函数包含的提取功能的完整列表。通过示例的方式考虑计算时间同步的频谱平均振动信号。

重置(ENS)数据=读取(ex)
数据=1×2表振动动力___________________ ______________ [30106×1时间表] [8×1持续时间]
振动= data.vibration {1};%将振动信号插值到适合fft分析的周期时基上NP = 2 ^楼层(LOG(高度(振动))/ log(2));dt =振动.Time(END)/(NP-1);电视= 0:DT:振动.Time(END);y =转音(振动,电视,“线性”);%计算振动信号的时间同步平均值tp =秒(data.tachopulses {1});vistrtsa = tsa(y,tp);图绘图(Vistrtsa.ttime,Vistrtsa.Time)标题(“振动时间同步平均值”)伊拉贝尔('加速'

%计算时间同步平均值的频谱np = numel(vistrtsa);f = fft(vistrtsa.tsa。*汉明(np))/ np;FRTSA = F(1:地板(NP / 2)+1);%TSA频率响应wTSA=(0:np/2)/np*(2*pi/s(dt));%TSA频谱频率mtsa = abs(frtsa);%TSA谱震级图semilogx(wTSA,20*log10(mTSA))标题('振动谱')xlabel(“rad/s”

对应于峰值幅度的频率可以是一个可用于对不同故障类型进行分类的特征。下面的代码计算上述所有集合成员所提到的功能(运行此分析最多需要在标准桌面上的一个小时。可选代码以使用该集合并行运行分析隔断命令提供。)在调用WriteTolastMemberRead之前将功能的名称添加到集合数据变量属性,以将计算的功能添加到每个集合成员。

重置(ens)ens.DataVariables=[ens.DataVariables;...“SigMean”;“sigmedian”;“SIGRMS”;“SigVar”;“sigpeak”;“SigPeak2Peak”;“偏斜”;...“信号峰度”;“sigcrestfactor”;“西格玛”;“sigrangecumsum”;“sigcorredimension”;“sig xpprugxentropy”;...“SigLyapExponent”;“PeakFreq”;“高频功率”;“环境动力”;“峰度峰值”];如果runLocal虽然hasdata(ens)数据=读取(ens);addData = analyzeData(数据);WriteTolastmemberRead(ex,adddata);结尾别的%将集合拆分为分区并并行分析每个分区n=百分比(ens,gcp);议案ct = 1:n sumens = partition(ens,n,ct);虽然hasdata(subens)数据=读(subens);addData = analyzeData(数据);writeToLastMemberRead(subens的话,addData)结尾结尾结尾

故障分类的特征选择

上述计算的特征用于构建分类器,对不同的故障条件进行分类。首先,将集成配置为仅读取衍生特征和故障标签。

featurevariables = Analyzedata(“GetFeatureNames”); ens.DataVariables=[ens.DataVariables;特征变量];ens.SelectedVariables=[featureVariables;条件变量];重置(ens)

将所有集合成员的特征数据收集到一个表中。

Featureata =聚集(高(ens))
使用并行池“本地”评估高表达: -  PASS 1为1:在1.8分钟的评估中完成,在1.8167分钟内完成
featuredata =208×22表SigMean SigMedian SigRMS SigVar SigPeak SigPeak2Peak SigSkewness SigKurtosis SigCrestFactor SigMAD SigRangeCumSum SigCorrDimension SigApproxEntropy SigLyapExponent PeakFreq HighFreqPower EnvPower PeakSpecKurtosis SensorDrift ShaftWear ToothFault的faultcode ________ _________ _______ _______ _______ ____________ ___________ ___________ ______________ _______ ______________ ________________ ________________ _______________ ________ _____________ __________ ________________ ___________ _________ __________ _________ -0.94876 -0.9722 1.3726 0.983870.81571 3.6314 -0.041525 2.2666 2.0514 0.8081 28562 1.1427 0.031601 79.531 0 6.7528e-06 3.2349e-07 162.13真假假1 -0.97537 -0.98958 1.3937 0.99105 0.81571 3.6314 -0.023777 2.2598 2.0203 0.81017 29418 1.1362 0.03786 70.339 0 5.0788e-08 9.1568e-08 226.12真假假1 1.0502 1.0267 1.4449 0.98491 2.8157 3.6314 -0.04162 2.2658 1.9487 0.80853 31710 1.1479 0.031586 125.18 0 6.7416e-06 3.1343e-07 162.13真真假3 1.0227 1.0045 1。4288 0.99553 2.8157 3.6314 -0.016356 2.2483 1.9707 0.81324 30984 1.1472 0.032109 112.52 0 4.9934e-06 2.5787e-07 162.13 true true false 3 1.0123 1.0024 1.4202 0.99233 2.8157 3.6314 -0.014701 2.2542 1.9826 0.81156 30661 1.147 0.032891 109.02 0 3.619e-06 2.2397e-07 230.39 true true false 3 1.0275 1.0102 1.4338 1.0001 2.8157 3.6314 -0.02659 2.2439 1.9638 0.81589 31102 1.0975 0.033449 64.499 0 2.5493e-06 1.9224e-07 230.39 true true false 3 1.0464 1.0275 1.4477 1.0011 2.8157 3.6314 -0.042849 2.2455 1.9449 0.81595 31665 1.1417 0.034182 98.759 0 1.7313e-06 1.6263e-07 230.39 true true false 3 1.0459 1.0257 1.4402 0.98047 2.8157 3.6314 -0.035405 2.2757 1.955 0.80583 31554 1.1345 0.035323 44.304 0 1.1115e-06 1.2807e-07 230.39 true true false 3 1.0263 1.0068 1.4271 0.98341 2.8157 3.6314 -0.0165 2.2726 1.973 0.80624 30951 1.1515 0.03592 125.28 0 6.5947e-07 1.208e-07 162.13 true true false 3 1.0103 1.0014 1.4183 0.99091 2.8157 3.6314 -0.011667 2.2614 1.9853 0.80987 30465 1.0619 0.036514 17.093 0 5.2297e-07 1.0704e-07 230.39 true true false 3 1.0129 1.0023 1.419 0.98764 2.8157 3.6314 -0.010969 2.266 1.9843 0.80866 30523 1.1371 0.037234 84.568 0 2.1605e-07 8.774e-08 230.39 true true false 3 1.0251 1.0104 1.4291 0.9917 2.8157 3.6314 -0.023609 2.2588 1.9702 0.81048 30896 1.1261 0.037836 98.463 0 5.0275e-08 9.0495e-08 230.39 true true false 3 -0.97301 -0.99243 1.3928 0.99326 0.81571 3.6314 -0.012569 2.2589 2.0216 0.81095 29351 1.1277 0.038507 42.887 0 1.1383e-11 8.3005e-08 230.39 true false true 5 1.0277 1.0084 1.4315 0.99314 2.8157 3.6314 -0.013542 2.2598 1.9669 0.81084 30963 1.1486 0.038524 99.426 0 1.1346e-11 8.353e-08 226.12 true true true 7 0.026994 0.0075709 0.99697 0.99326 1.8157 3.6314 -0.012569 2.2589 1.8212 0.81095 1083.8 1.1277 0.038507 44.448 9.998 4.9172e-12 8.3005e-08 230.39 false false true 4 0.026943 0.0084639 0.99297 0.98531 1.8157 3.6314 -0.018182 2.2686 1.8286 0.80732 1466.6 1.1368 0.035822 93.95 1.8618 6.8872e-07 1.2185e-07 230.39 false false false 0 ⋮

考虑传感器漂移故障。使用FSCNCA使用上面计算的所有功能的命令作为预测器和传感器漂移故障标签(一个真假值)作为响应。这FSCNCA命令返回每个特征的权重,权重较高的特征在预测响应时具有更高的重要性。对于传感器漂移故障,权重表明两个特征是重要的预测因子(信号累积和范围和频谱峰度的峰值频率),其余特征影响不大。

idxResponse =的strcmp(featureData.Properties.VariableNames,'sensordrift');idxLastFeature =找到(idxResponse)-1;%用作潜在预测因子的最后一个特征的索引featureanalysis = fscnca(featureata {:,1:idxlastfeature},featureda.sensordrift);Featureanalysis.featureweights.
ans =.18×10.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 ⋮
IdxselectedFeature = Featureanalysis.featureweights> 0.1;classifysd = [featuredata(:,idxselectedfeature),featureda(:,idxresponse)]
classifysd =.208×3表SigRangeCumSum PeakSpecKurtosis SensorDrift ______________ ________________ ___________ 28562 162.13真正29418 226.12真正31710 162.13真正30984 162.13真正30661 230.39真正31102 230.39真正31665 230.39真正31554 230.39真正30951 162.13真正30465 230.39真正30523 230.39真正30896 230.39真正29351 230.39真正30963 226.12真1083.8 230.39假1466.6 230.39 false⋮

分组的累积总和范围的直方图使我们能够深入了解该特征是传感器漂移故障的重要预测因子。

图表直方图(classifysd.sigrangecumsum(classifysd.sensordrift),'binwidth',5e3)xlabel('信号累积总和范围')伊拉贝尔('数数')持有在…上直方图(classifySD.SigRangeCumSum(~classifySD.SensorDrift),'binwidth',5e3)持有传奇('传感器漂移故障''没有传感器漂移故障'

柱状图显示,信号累积和范围是检测传感器漂移故障的良好特征,尽管可能需要额外的特征,因为如果仅使用信号累积和范围对传感器漂移进行分类,当信号累积和范围低于0.5时,可能会出现误报。

考虑轴磨损故障。在这种情况下FSCNCA功能表示存在3个功能,是故障的重要预测因子(信号Lyapunov指数,峰值频率和峰值频率在光谱峰值中),选择这些以分类轴磨损故障。

idxResponse =的strcmp(featureData.Properties.VariableNames,'shaftwear');featureanalysis = fscnca(featureata {:,1:idxlastfeature},featuredata.shaftwear);Featureanalysis.featureweights.
ans =.18×10.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 ⋮
idxSelectedFeature=featureAnalysis.FeatureWeights>0.1;classifySW=[featureData(:,idxSelectedFeature),featureData(:,idxResponse)]
分类软件=208×4表SigLyapExponent PeakFreq PeakSpecKurtosis ShaftWear _______________ ________ ________________ _________ 79.531 0 162.13虚假70.339 0 226.12假125.18 0 162.13真正112.52 0 162.13真正109.02 0 230.39真正的64.499 0 230.39真正的98.759 0 230.39真正的44.304 0 230.39真正125.28 0 162.13真正的17.093 0 230.39真正的84.568 0230.39 TRUE 98.463 0 230.39 TRUE 42.887 0 230.39 FALSE 99.426 0 226.12 TRUE 44.448 9.998 230.39 FALSE 93.95 1.8618 230.39 FALSE⋮

信号Lyapunov指数的分组直方图显示了为什么仅该特征不是一个好的预测因子。

图表直方图(classifysw.siglyapexponent(classifysw.shaftwear))xlabel('信号Lyapunov指数')伊拉贝尔('数数')持有在…上直方图(classifysw.siglyapexponent(〜classifysw.shaftwear))保持传奇('轴磨损过错'“无轴磨损故障”

轴磨损特征选择表示轴磨损故障所需的多个功能,分组的直方图确认这是最重要的特征(在这种情况下Lyapunov指数)对故障和故障方案具有类似的分布,表明更多功能需要正确对此故障进行分类。

最后考虑牙齿的故障,FSCNCA功能表明,有3个功能是故障的重要预测因子(信号累积总和范围,信号Lyapunov指数和光谱峰峰中的峰值频率)。选择这三种功能以将牙齿故障分类导致性能不佳的分类器。相反,使用6个最重要的功能。

idxResponse =的strcmp(featureData.Properties.VariableNames,“牙错”); featureAnalysis=fscnca(featureData{:,1:idxLastFeature},featureData.ToothFault);[~,,idxSelectedFeature]=排序(featureAnalysis.FeatureWeights);classifyTF=[featureData(:,idxSelectedFeature(end-5:end)),featureData(:,idxResponse)]
classifytf =208×7表“pepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepe一一一一一一一一一一一一一一个一一一一一一一一一一一一一一个一一一一一个一一一一一一一一一个一一一一一个一一一一一一一一一个一一一一一一一一个一个一一一一一个一个Uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu0.81571 1.1427 79.531 162.13 28562假0.81571 1.1362 70.339 226.12 29418假0 2.8157 1.1479 125.18 162.13 31710假0 0 2.8157 1.1472 112.52 162.13 30984假0 2.8157 1.147 109.02 230.39 30661假0 2.8157 1.0975 64.499 230.39 31102假0 2.8157 1.1417 98.759 230.39 31665假0 2.8157 1.1345 44.304 230.39 31554假0 2.8157 1.1515 125.28 162.13 30951假0 2.8157 1.0619 17.093 230.39假0 2.8157 1.1371 84.568 230.39 30523假0 2.8157 1.1261.463假0.89300.81571 1.1277 42.887 230.39 29351真0.8157 1.1486 99.426 226.12 30963真9.998 1.8157 1.1277 44.448 230.39 1083.8真1.8618 1.8157 1.1368 93.95 230.39 1466.6假⋮
图直方图(classifyTF.SigRangeCumSum(classifyTF.TootFault))xlabel('信号累积总和范围')伊拉贝尔('数数')持有在…上直方图(classifftf.sigrangecumsum(〜classifytf.ToothFault))保持传奇('齿轮牙齿故障''没有齿轮牙齿'

利用上述结果,利用多项式支持向量机对齿轮轮齿故障进行分类。将要素表拆分为用于培训的成员和用于测试和验证的成员。使用训练成员使用fitcsvm.指挥部。

RNG('默认'重复性的%cvp = cvpartition(size(classifytf,1),“KFold”5);%随机分区数据进行培训和验证classifierTF=fitcsvm(...classifytf(cvp.training(1),1:结束-1),...classifftf(cvp.training(1),结束),...“内核函数”“多项式”...“多项式序”2,...'kernelscale''汽车'...“BoxConstraint”,1,...'标准化'是的,...'classnames',[错误的;真的]);

使用分类器将测试点分类使用预测命令并使用混淆矩阵检查预测的性能。

%使用测试验证数据上的分类器来评估性能actualValue = classifyTF {cvp.test(1),端};predictedValue =预测(classifierTF,classifyTF(cvp.test(1),1:端-1));%通过计算和绘制混淆矩阵来检查性能confdata=confusionmat(实际值、预测值);h=热图(confdata,...“伊拉贝尔”“实际轮齿故障”...“YDisplayLabels”, {“假”'真的'},...“XLabel”“预测轮齿故障”...“XDisplayLabels”, {“假”'真的'},...'彩色条形图''离开');

混淆矩阵表示分类器正确对所有非故障条件进行分类,但错误地对一个预期的故障条件分类为不是故障。增加分类器中使用的功能数量可以帮助提高性能。

概括

本实施例中通过工作流从Simulink中产生故障数据走去,使用模拟合奏来清理该模拟数据和提取功能。万博1manbetx然后将提取的特征被用来建立用于所述不同故障类型的分类。

也可以看看

相关话题