采用Simu金宝applink生成故障数据

这个例子说明了如何使用Simulink模型产生的故障和健康数据。金宝app故障和健康数据用于开发状态监测算法。该示例使用的传输系统和模型的齿轮齿的故障,传感器漂移故障和轴的磨损故障。

传输系统模型

变速器壳体模型使用的Simscape传动系统块来建模的简单传输系统。所述的传输系统包括一个扭矩驱动器,驱动轴,离合器,以及连接到输出轴高和低齿轮。

MDL ='pdmTransmissionCasing';open_system(MDL)

传输系统包括监测壳体振动的振动传感器。壳体模型平移轴的角位移,以在壳体上的线性位移。壳体被建模为质量弹簧阻尼器系统和振动(壳体加速度)从外壳测量。

open_system([MDL'/套管'])

断层建模

传输系统包括用于振动传感器漂移,齿轮齿的故障,和轴的磨损故障模型。传感器漂移故障容易被引入在所述传感器模型偏移建模。由模型变量控制的偏移SDrift, 注意SDrift = 0意味着没有传感器故障。

open_system([MDL“/振动传感器与漂移”])

轴磨损故障是由一个变体子系统建模。在这种情况下,子系统变体将转轴阻尼,但是变体子系统可以用来彻底改变轴模型实现。所选择的变体是由该模型变量控制ShaftWear, 注意ShaftWear = 0意味着无轴故障。

open_system([MDL“/轴”])

open_system([MDL,“/轴/输出轴”])

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

模拟故障和健康数据

传输模型配置有控制三个不同故障类型,传感器漂移,齿轮齿,和轴的磨损的存在和严重程度的变量。通过改变模型变量,SDriftToothFaultGainShaftWear,您可以创建不同的故障类型的振动数据。使用数组金宝appSimulink.SimulationInput对象来定义多个不同的模拟方案。例如,选择值的阵列为每个模型变量的,然后使用ndgrid函数来创建金宝appSimulink.SimulationInput对于模型变量值的每个组合。

toothFaultArray = -2:2/10:0;%齿故障增益值sensorDriftArray = -1:0.5:1;%传感器漂移的偏移值shaftWearArray = [0 -1];%,持续传动轴条件两种型号%创建具有所有值的组合的n维阵列[toothFaultValues,sensorDriftValues,shaftWearValues] =...ndgrid(toothFaultArray,sensorDriftArray,shaftWearArray);对于CT = numel(toothFaultValues): -  1:1%为值的每个组合创建S金宝appimulink.SimulationInputsiminput = 金宝appSimulink.SimulationInput(MDL);%修改模型参数siminput = setVariable(siminput,'ToothFaultGain',toothFaultValues(CT));siminput = setVariable(siminput,'SDrift',sensorDriftValues(CT));siminput = setVariable(siminput,'ShaftWear',shaftWearValues(CT));%收集模拟输入阵列中的gridSimulationInput(CT)= siminput;结束

类似地为每个模型变量的随机值的组合。确保包括0值,使得存在其中只有三个故障类型的子集表示的组合。

RNG('默认');%重设再现性随机种子toothFaultArray = [0 -rand(1,6)]。%齿故障增益值sensorDriftArray = [0 randn(1,6)/ 8];%传感器漂移的偏移值shaftWearArray = [0 -1];%,持续传动轴条件两种型号%创建具有所有值的组合的n维阵列[toothFaultValues,sensorDriftValues,shaftWearValues] =...ndgrid(toothFaultArray,sensorDriftArray,shaftWearArray);对于CT = numel(toothFaultValues): -  1:1%为值的每个组合创建S金宝appimulink.SimulationInputsiminput = 金宝appSimulink.SimulationInput(MDL);%修改模型参数siminput = setVariable(siminput,'ToothFaultGain',toothFaultValues(CT));siminput = setVariable(siminput,'SDrift',sensorDriftValues(CT));siminput = setVariable(siminput,'ShaftWear',shaftWearValues(CT));%收集模拟输入阵列中的randomSimulationInput(CT)= siminput;结束

与阵列金宝appSimulink.SimulationInput对象定义使用generateSimulationEnsemble函数来运行模拟。该generateSimulationEnsemble功能配置模型来记录数据保存到文件,请使用时间表格式信号记录和存储金宝appSimulink.SimulationInput对象保存的文件。该generateSimulationEnsemble函数返回一个状态标志,指示仿真是否成功完成。

从网格变量值以上创建110个模拟输入的代码和98从给予208个总模拟随机变量值模拟输入。并行运行这些模拟208在标准桌面上大约需要十分钟,围绕10GB的数据,选择仅运行所述第一模拟10被提供用于方便生成。

%运行模拟,并创建一个整体来管理仿真结果如果〜存在(完整文件(PWD,'数据'“目录”)MKDIR(完整文件(PWD,'数据'))%创建目录存储结果结束runAll = TRUE;如果runAll [OK,E] = generateSimulationEnsemble([gridSimulationInput,randomSimulationInput]...完整文件(PWD,'数据''UseParallel',真正的);其他[确定,E] = generateSimulationEnsemble(gridSimulationInput(1:10),完整文件(PWD,'数据'));%#确定<* UNRCH>结束
[28-FEB-2018 13点17分31秒]检查并行池的可用性... [28月 -  2018十三点17分37秒]加载的Simulink并行的工人......分析和传输文件给工人..金宝app.done。[28-FEB-2018 13点17分56秒]配置模拟缓存文件夹上并行的工人... [28月-2018 13点17分57秒]上并行运行工... SetupFcn [28-FEB-2018 13:18:01]在平行工人加载模型... [28-FEB-2018 13时18分02秒]转移模型中使用的平行工基工作区变量... [28-FEB-2018 13点18分07秒]运行模拟... [28-FEB-2018 13点18分29秒]已完成208 1的模拟运行[28-FEB-2018 13点18分29秒]已完成2 208的模拟运行[28-FEB-2018 13时18分:30]已完成的208个模拟运行3 ... [28-FEB-2018 13点24分22秒]完成208个模拟运行[28-FEB-2018 13时24分28秒]完成208个模拟运行205 204 [28-Feb-2018 13时24分28秒]已完成208 206模拟运行[28-FEB-2018 13时24分28秒]完成208个模拟运行[28-FEB-2018 13点24分29秒] 207 208完成208模拟运行[28月 -  2018 13时24分33秒]清理并行的工人...

generateSimulationEnsemble跑和记录的模拟结果。建立仿真合奏工艺和使用分析模拟结果simulationEnsembleDatastore命令。

ENS = simulationEnsembleDatastore(完整文件(PWD,'数据'));

处理模拟结果

simulationEnsembleDatastore命令而建立的合奏对象指向的模拟结果。使用合奏对象在集合中的每个成员准备和分析数据。合奏对象列出了合奏,默认情况下的数据变量的所有变量都选择阅读。

ENS
ENS = simulationEnsembleDatastore与属性:DataVariables:[6×1字符串] IndependentVariables:[0×0字符串] ConditionVariables:[0×0字符串] SelectedVariables:[6×1字符串] NumMembers:208 LastMemberRead:[0×0字符串]
ens.SelectedVariables
ANS =6×1字符串数组“SimulationInput” “SimulationMetadata” “测速”, “震动” “xFinal” “XOUT”

为了分析只能读取振动测速信号和金宝appSimulink.SimulationInput。该金宝appSimulink.SimulationInput具有用于仿真该模型的变量值,并用于对集合成员创建故障标签。使用合奏命令获取合奏构件的数据。

ens.SelectedVariables = [“振动”“测速”“SimulationInput”]。数据=读(ENS)
数据=1×3表振动测速SimulationInput ___________________ ___________________ ______________________________ [40272×1时间表] [40272×1时间表] [1×1 Simulink.SimulationInput]金宝app

提取返回的数据振动信号和绘制。

振动= data.Vibration {1};图(vibration.Time,vibration.Data)称号('振动')ylabel(“加速”

模拟的前10秒,其中包含传输系统正在启动的数据;分析丢弃该数据。

IDX = vibration.Time> =秒(10);振动=振动(IDX,:);vibration.Time = vibration.Time  -  vibration.Time(1);

测速信号包含用于驱动和负载轴但分析,具体时间同步平均的旋转脉冲,要求轴旋转的次数。下面的代码丢弃的前10秒测速的数据,发现在t时的轴旋转时间achoPulses

测速= data.Tacho {1};IDX = tacho.Time> =秒(10);测速=测速(IDX,:);图(tacho.Time,tacho.Data)称号(“测速脉冲”)图例('传动轴'“负载轴”%负载轴旋转速度慢于驱动轴

IDX = DIFF(tacho.Data(:,2))> 0.5;tachoPulses = tacho.Time(FIND(IDX)+1)-tacho.Time(1)
tachoPulses =8×1阵列的持续时间2.8543秒6.6508秒10.447秒14.244秒18.04秒21.837秒25.634秒29.43秒

金宝appSimulink.SimulationInput.Variables属性包含用于模拟故障参数的值,这些值允许我们为每个集合构件创建故障标签。

瓦尔= data.SimulationInput {1} .Variables;IDX =的strcmp({vars.Name}'SDrift');如果任何(IDX)SF = ABS(VARS(IDX)。价值)> 0.01;%小漂移值不是故障其他SF = FALSE;结束IDX =的strcmp({vars.Name}'ShaftWear');如果任何(IDX)SV = VARS(IDX)。价值<0;其他SV = FALSE;结束如果任何(IDX)IDX =的strcmp({vars.Name}'ToothFaultGain');ST = ABS(VARS(IDX)。价值)<0.1;%小齿故障值不是故障其他ST = FALSE结束的faultcode =的sF + 2 * SV + 4 * ST;%A故障代码来捕获不同故障条件

经处理的振动和转速信号和所述故障标记被添加到后面将要使用的合奏。

SDATA =表({振动},{tachoPulses},SF,SV,ST,Fault代码,...'VariableNames'{'振动''TachoPulses''SensorDrift''ShaftWear''ToothFault'“Fault代码”})
SDATA =1×6表振动TachoPulses SensorDrift ShaftWear ToothFault的faultcode ___________________ ______________ ___________ _________ __________ _________ [30106×1时间表] [8×1持续时间]真假假1
ens.DataVariables = [ens.DataVariables;“TachoPulses”]。

合奏ConditionVariables属性可以被用来识别在含有情况下或故障的标签数据的合奏的变量。设置属性包含新创建的故障标签。

ens.ConditionVariables = [“SensorDrift”“ShaftWear”“ToothFault”“Fault代码”]。

上面的代码被用于处理集合的一个成员。为了处理所有的集合成员的代码以上转化为功能prepareData并使用合奏hasdata命令的循环用于应用prepareData所有集合成员。集合成员可以并行通过划分合奏和并行处理的合奏分区进行处理。

复位(ENS)runLocal = FALSE;如果runLocal%工序在合奏的每个构件hasdata(ENS)数据=读(ENS);addData = prepareData(数据);writeToLastMemberRead(ENS的话,addData)结束其他%分配的合奏为分区和并行处理的每个分区N = numpartitions(ENS,GCP);PARFORCT = 1:n的subens =分区(ENS,N,CT);hasdata(subens)数据=读(subens);addData = prepareData(数据);writeToLastMemberRead(subens的话,addData)结束结束结束

积使用的合奏的每第10部件的振动信号hasdata命令,以提取所述振动信号。

复位(ENS)ens.SelectedVariables =“振动”;图中,CT = 1;hasdata(ENS)数据=读(ENS);如果MOD(CT,10)== 0振动= data.Vibration {1};图(vibration.Time,vibration.Data)保持结束CT = CT + 1;结束保持标题(“振动信号”)ylabel(“加速”

分析仿真数据

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

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

对于在合奏计算每个部件的若干基于时间和频谱特性。这些包括信号统计数据,如信号平均值,方差,峰如近似熵和Lyapunov指数,和光谱特征,例如振动信号的时间同步平均的峰值频率的峰值,非线性的信号特性,并且功率的时间同步平均包络信号。该analyzeData函数包含的提取功能的完整列表。通过示例的方式考虑计算时间同步的频谱平均振动信号。

复位(ENS)数据=读(ENS)
数据=1×2表振动TachoPulses ___________________ ______________ [30106×1时间表] [8×1持续时间]
振动= data.Vibration {1};%插值振动信号到周期性时基适于FFT分析NP = 2 ^地板(日志(高度(振动))/日志(2));DT = vibration.Time(前端)/(NP-1);电视= 0:峰dt:vibration.Time(端);Y =重新定时(振动,电视,“线性”);振动信号的%计算的时间同步平均TP =秒(data.TachoPulses {1});vibrationTSA = TSA(Y,TP);图图(vibrationTSA.ttTime,vibrationTSA.tsa)称号(“振动时间同步平均”)ylabel(“加速”

%计算的时间同步平均的频谱NP = numel(vibrationTSA);F = FFT(。* vibrationTSA.tsa汉明(NP))/ NP;frTSA = F(1:地板(NP / 2)+1);%TSA频率响应WTSA =(0:NP / 2)/ NP *(2 * PI /秒(DT));%TSA频谱频率MTSA = ABS(frTSA);TSA%幅度谱图semilogx(WTSA,20 * LOG10(MTSA))标题(“振动频谱”)xlabel(“弧度/秒”

对应于峰值幅度可能变成频率是一个特点,那就是对分类的不同的故障类型非常有用。下面计算代码上面提到的所有集合成员的特征(一个标准的桌面上运行该分析化妆需要大约三十分钟可选代码并行使用合奏运行分析划分命令被提供)。该特征的名字叫writeToLastMemberRead的计算功能添加到每个集合构件之前被添加到整体数据变量属性。

复位(ENS)ens.DataVariables = [ens.DataVariables;...“SigMean”;“SigMedian”;“SigRMS”;“SigVar”;“SigPeak”;“SigPeak2Peak”;“SigSkewness”;...“SigKurtosis”;“SigCrestFactor”;“SigMAD”;“SigRangeCumSum”;“SigCorrDimension”;“SigApproxEntropy”;...“SigLyapExponent”;“PeakFreq”;“HighFreqPower”;“EnvPower”;“PeakSpecKurtosis”]。如果runLocalhasdata(ENS)数据=读(ENS);addData = analyzeData(数据);writeToLastMemberRead(ENS的话,addData);结束其他%分配的合奏为分区和并行分析每个分区N = numpartitions(ENS,GCP);PARFORCT = 1:n的subens =分区(ENS,N,CT);hasdata(subens)数据=读(subens);addData = analyzeData(数据);writeToLastMemberRead(subens的话,addData)结束结束结束

选择要素的故障分类

上面计算的特征被用于构建分类器以不同的故障状况进行分类。首先配置合奏只读导出功能和故障标签。

featureVariables = analyzeData('GetFeatureNames');ens.DataVariables = [ens.DataVariables;featureVariables];ens.SelectedVariables = [featureVariables;ens.ConditionVariables];复位(ENS)

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

featureData =聚集(高(ENS))
评估使用并行池“本地”高表达: - 的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(featureData {:,1:idxLastFeature},featureData.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),featureData(:,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假⋮

累积和范围的分组直方图让我们了解为什么这个功能是传感器漂移故障一个显著的预测。

图直方图(classifySD.SigRangeCumSum(classifySD.SensorDrift),'BinWidth',5E3)xlabel(“信号累积和范围”)ylabel('计数')保持直方图(classifySD.SigRangeCumSum(〜classifySD.SensorDrift),'BinWidth',5E3)保持传说(“传感器漂移故障”“无传感器漂移故障”

该直方图示出了信号累积和范围的特征,用于检测的传感器漂移故障虽然附加的特征可能是需要的,因为可能是假阳性,当信号累积和范围低于0.5,如果使用仅仅是信号累积和范围内有良好分类传感器漂移。

考虑轴的磨损故障。在这种情况下,fscnca功能指示有3个特征是用于故障(信号Lyapunov指数,峰值频率,并在频谱的峰度,峰值频率),选择这些对轴的磨损故障分类显著预测因子。

idxResponse =的strcmp(featureData.Properties.VariableNames,'ShaftWear');featureAnalysis = fscnca(featureData {:,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)]
classifySW =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真正的98.463 0 230.39真正的42.887 0 230.39虚假99.426 0 226.12真正44.448 9.998 230.39虚假93.95 1.8618 230.39假⋮

对于信号李雅普诺夫分组直方图李氏指数说明了为什么单单这个功能是不是一个很好的预测。

图直方图(classifySW.SigLyapExponent(classifySW.ShaftWear))xlabel(“信号Lyapunov指数”)ylabel('计数')保持直方图(classifySW.SigLyapExponent(〜classifySW.ShaftWear))保持传说(“轴的磨损故障”“无轴的磨损故障”

的轴的磨损特征选择指示需要多个特征以在轴的磨损故障进行分类,在分组直方图证实了这是最显著特征(在这种情况下,Lyapunov指数)具有用于两个缺陷的类似的分布和无故障情景指示更多的功能需要这种故障正确分类。

最后考虑齿故障时,fscnca函数表示有主3个特征是用于故障(信号累积和范围,信号Lyapunov指数和在光谱的峰度,峰值频率)显著预测因子。选择这3个功能,在具有性能较差的分类牙齿故障导致分类。相反,使用6个最重要的特点。

idxResponse =的strcmp(featureData.Properties.VariableNames,'ToothFault');featureAnalysis = fscnca(featureData {:,1:idxLastFeature},featureData.ToothFault);[〜,idxSelectedFeature] =排序(featureAnalysis.FeatureWeights);classifyTF = [featureData(:,idxSelectedFeature(端5:端)),featureData(:,idxResponse)]
classifyTF =208×7表PeakFreq SigPeak SigCorrDimension SigLyapExponent PeakSpecKurtosis SigRangeCumSum ToothFault ________ _______ ________________ _______________ ________________ ______________ __________ 0 0.81571 1.1427 79.531 162.13 28562虚假0 0.81571 1.1362 70.339 226.12 29418虚假0 2.8157 1.1479 125.18 162.13 31710虚假0 2.8157 1.1472 112.52 162.13 30984虚假0 2.8157 1.147 109.02 230.39 30661虚假02.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 30465假0 2.8157 1.1371 84.568 230.39 30523假0 2.8157 1.1261 98.463 230.39 30896假0 0.815711.1277 42.887 230.39 29351真正的0 2.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.ToothFault))xlabel(“信号累积和范围”)ylabel('计数')保持直方图(classifyTF.SigRangeCumSum(〜classifyTF.ToothFault))保持传说(“齿故障”“无齿故障”

利用上述结果的多项式SVM分类轮齿断裂。拆分功能表成被用于训练和团员进行测试和验证。使用培训成员使用,以创建一个SVM分类fitcsvm命令。

RNG('默认'%用于重现CVP = cvpartition(大小(classifyTF,1),'KFold',5);随机%为划分训练和验证数据classifierTF = fitcsvm(...classifyTF(cvp.training(1),1:端-1),...classifyTF(cvp.training(1),结束),...'KernelFunction'“多项式”...'PolynomialOrder',2,...'KernelScale''汽车'...'BoxConstraint'1,...“标准化”,真正,...“类名”,[假;真正]);

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

%使用分类上测试验证数据来评估业绩actualValue = classifyTF {cvp.test(1),端};predictedValue =预测(classifierTF,classifyTF(cvp.test(1),1:端-1));%检查通过计算和绘图混淆矩阵性能confdata = confusionmat(actualValue,predictedValue);H =热图(confdata,...'YLabel'“实际齿故障”...'YDisplayLabels'{'假''真正'},...'XLabel'“预测的齿故障”...'XDisplayLabels'{'假''真正'},...'ColorbarVisible'“关”);

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

摘要

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

也可以看看

相关话题