主要内容

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

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

传动系统模型

传动套管模型使用Simscape™Driveline™模块来建模一个简单的传动系统。传动系统由扭矩驱动器、传动轴、离合器和连接到输出轴的高低齿轮组成。

mdl =“pdmTransmissionCasing”;open_system (mdl)

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

open_system ([mdl' /套管'])

断层建模

传动系统包括振动传感器漂移、齿轮齿故障和轴磨损等故障模型。通过在传感器模型中引入偏移量,可以很容易地模拟传感器漂移故障。偏移量由模型变量控制SDrift,请注意SDrift = 0说明没有传感器故障。

open_system ([mdl/带漂移的振动传感器])

采用变分系统对轴磨损故障进行建模。在这种情况下,子系统的变体改变了轴的阻尼,但变体子系统可以用来完全改变轴的模型实现。所选变量由模型变量控制ShaftWear,请注意ShaftWear = 0暗示没有轴故障。

open_system ([mdl“/轴”])

(mdl open_system (,/轴输出轴的])

通过在传动轴转动的固定位置注入扰动力矩来模拟齿轮齿故障。轴的位置以弧度为单位测量,当轴的位置在0附近的一个小窗口内时,将扰动力施加到轴上。扰动的大小由模型变量控制ToothFaultGain,请注意ToothFaultGain = 0暗示没有齿轮齿故障。

模拟故障和正常数据

变速器模型配置了控制三种不同故障类型(传感器漂移、齿轮齿和轴磨损)的存在和严重程度的变量。通过改变模型变量,SDriftToothFaultGain,ShaftWear,可针对不同故障类型创建振动数据。使用数组金宝app仿真软件。SimulationInput对象来定义许多不同的模拟场景。例如,为每个模型变量选择一个值数组,然后使用ndgrid函数创建金宝app仿真软件。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创建一个Simulin金宝appk。SimulationInput为each combination of valuessiminput = 金宝appSimulink.SimulationInput(mdl);修改模型参数siminput = setVariable(siminput,“ToothFaultGain”toothFaultValues (ct));siminput = setVariable(siminput,“SDrift”sensorDriftValues (ct));siminput = setVariable(siminput,“ShaftWear”shaftWearValues (ct));在数组中收集模拟输入gridSimulationInput(ct) = simminput;结束

类似地,为每个模型变量创建随机值的组合。一定要包括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 =元素个数(toothFaultValues): 1:1创建一个Simulin金宝appk。SimulationInput为each combination of valuessiminput = 金宝appSimulink.SimulationInput(mdl);修改模型参数siminput = setVariable(siminput,“ToothFaultGain”toothFaultValues (ct));siminput = setVariable(siminput,“SDrift”sensorDriftValues (ct));siminput = setVariable(siminput,“ShaftWear”shaftWearValues (ct));在数组中收集模拟输入randomSimulationInput(ct) = siminput;结束

数组金宝app仿真软件。SimulationInput对象使用generateSimulationEnsemble函数运行模拟。的generateSimulationEnsemble函数配置模型将记录的数据保存到文件,使用时间表格式的信号记录和存储金宝app仿真软件。SimulationInput保存的文件中的对象。的generateSimulationEnsemble函数返回一个状态标志,指示模拟是否成功完成。

上面的代码从网格化的变量值和创建了110个模拟输入98来自随机变量值的模拟输入给出208个总共的模拟。在一个标准的桌面上并行运行这208个模拟可能需要两个小时或更长时间,并生成大约10GB的数据。为方便起见,提供了只运行前10个模拟的选项。

运行模拟并创建集成以管理模拟结果。如果~ (fullfile (pwd,存在“数据”),“dir”) mkdir (fullfile (pwd,“数据”))创建目录来存储结果结束runAll = true;如果runAll [ok,e] = generateSimulationEnsemble([gridSimulationInput, randomSimulationInput],...fullfile (pwd,“数据”),“UseParallel”,真正的);其他的[ok,e] = generateSimulationEnsemble(gridSimulationInput(1:10), fullfile(pwd,“数据”));% #好< * UNRCH >结束
[28-Feb-2018 13:17:31]检查并行池的可用性…[28-Feb-2018 13:17:37]加载Simulin金宝appk到并行工作者…分析文件并将文件传输给工作人员…完成。[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-Feb-2018 13:18:07]运行模拟…[28-Feb-2018 13:18:29]完成208次模拟运行中的1次[28-Feb-2018 13:18:30]完成208次模拟运行中的3次…[28-Feb-2018 13:24:28]完成208次模拟运行中的204次[28-Feb-2018 13:24:28]完成208次模拟运行中的206次[28-Feb-2018 13:24:29]完成208次模拟运行中的208次[28-Feb-2018 13:24:33]清理并行工人…

generateSimulationEnsemble运行并记录模拟结果。创建模拟集成,以处理和分析模拟结果simulationEnsembleDatastore命令。

ens = simulationEnsembleDatastore(fullfile(pwd,“数据”));

处理模拟结果

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

实体
ens = simulationEnsembleDatastore with properties: DataVariables: [6×1 string] IndependentVariables: [0×0 string] ConditionVariables: [0×0 string] SelectedVariables: [6×1 string] NumMembers: 208 LastMemberRead: [0×0 string]
ens.SelectedVariables
ans =6×1字符串数组"SimulationInput" "SimulationMetadata" "Tacho" "Vibration" "xFinal" "xout"

如需分析,请阅读振动而且转速计信号和金宝app仿真软件。SimulationInput.的金宝app仿真软件。SimulationInput具有用于模拟的模型变量值,并用于为集成成员创建故障标签。使用集合命令获取集成成员数据。

ens.SelectedVariables = [“振动”“转速器”“SimulationInput”];数据=读取(ens)
data =1×3表振动转速计SimulationInput  ___________________ ___________________ ______________________________ [ 40272×1时间表][40272×1时间表][1×1仿真软件。金宝appSimulationInput]

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

振动=数据。振动{1};情节(vibration.Time vibration.Data)标题(“振动”) ylabel (“加速”

模拟的前10秒包含传输系统启动的数据;为了分析,丢弃此数据。

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

转速计信号包含驱动轴和负载轴旋转的脉冲,但分析,特别是时间同步平均,需要轴旋转的次数。对象的前10秒将被丢弃转速计数据并找出轴的转动次数tachoPulses

tacho = data.Tacho{1};Idx = tacho。时间>=秒(10);Tacho = Tacho (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 SEC 6.6508 SEC 10.447 SEC 14.244 SEC 18.04 SEC 21.837 SEC 25.634 SEC 29.43 SEC

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

vars = data.SimulationInput{1}.Variables;Idx = strcmp({vars。名称},“SDrift”);如果any(idx) sF = abs(vars(idx).Value) > 0.01;漂移值小不是故障其他的sF = false;结束Idx = strcmp({vars。名称},“ShaftWear”);如果any(idx) sV = vars(idx)。值< 0;其他的sV = false;结束如果Any (idx) idx = strcmp({vars. txt)名称},“ToothFaultGain”);sT = abs(vars(idx).Value) < 0.1;%小齿故障值不是故障其他的sT = false结束faultCode = sF + 2*sV + 4*sT;用于捕获不同故障条件的故障代码

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

sdata = table({振动},{tachoPulses},sF,sV,sT,faultCode,...“VariableNames”, {“振动”“TachoPulses”“SensorDrift”“ShaftWear”“ToothFault”“FaultCode”})
sdata =1×6表振动TachoPulses SensorDrift ShaftWear ToothFault FaultCode  ___________________ ______________ ___________ _________ __________ _________ [ 30106×1时间表][8×1时间)真的假假的1
ens.DataVariables = [ens.DataVariables;“TachoPulses”];

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

ens.ConditionVariables = [“SensorDrift”“ShaftWear”“ToothFault”“FaultCode”];

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

reset(ens) runLocal = false;如果runLocal处理集成中的每个成员Hasdata (ens) data = read(ens);addData = prepareData(data);writeToLastMemberRead(实体,addData)结束其他的将集成拆分为多个分区,并并行处理每个分区N = numpartitions(ens,gcp);parforCt = 1:n subens =分区(ens,n, Ct);Hasdata (subens) data = read(subens);addData = prepareData(data);writeToLastMemberRead (suben, addData)结束结束结束

函数绘制集合中每10个成员的振动信号hasdata而且命令提取振动信号。

reset(ens) ens. selectedvariables =“振动”;图,ct = 1;Hasdata (ens) data = read(ens);如果mod(ct,10) == 0振动=数据{1};情节(vibration.Time vibration.Data)结束Ct = Ct + 1;结束持有标题(振动信号的) ylabel (“加速”

仿真数据分析

现在已经对数据进行了清理和预处理,接下来就可以提取特征来确定用于对不同故障类型进行分类的特征了。首先配置集成,使其只返回处理过的数据。

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

对于集成中的每个成员,计算一些基于时间和频谱的特征。其中包括信号统计量,如信号均值、方差、峰对峰,非线性信号特征,如近似熵和李雅普诺夫指数,以及频谱特征,如振动信号的时间同步平均的峰值频率,以及时间同步平均包络信号的功率。的analyzeData函数包含提取的特征的完整列表。通过实例,考虑计算时间同步平均振动信号的频谱。

Reset (ens) data = read(ens)
data =1×2表振动TachoPulses  ___________________ ______________ [ 30106×1时间表][8×1时间)
振动=数据。振动{1};将振动信号插值到适合fft分析的周期时间基上Np = 2^floor(log(高度(振动))/log(2));dt =振动。时间(结束)/(np-1);tv = 0:dt:振动。时间(结束);Y = retime(振动,电视,“线性”);计算振动信号的时间同步平均值tp = seconds(data.TachoPulses{1});vibrationTSA = tsa(y,tp);图(vibrationTSA.ttTime,vibrationTSA.tsa)“振动时间同步平均”) ylabel (“加速”

计算时间同步平均的频谱np =数字(振动tsa);f = fft(vibrationTSA.tsa.*hamming(np))/np;frTSA = f(1:floor(np/2)+1);% TSA频率响应wTSA = (0:np/2)/np*(2*pi/seconds(dt));TSA频谱频率mTSA = abs(frTSA);% TSA谱量级图半对数(wTSA,20*log10(mTSA))振动光谱的)包含(“rad / s”

与峰值震级相对应的频率可能成为分类不同断层类型有用的特征。下面的代码为所有集成成员计算上面提到的特性(在标准桌面上运行此分析可能需要一个小时。使用集成并行运行分析的可选代码分区提供命令。)在调用writeToLastMemberRead将计算出的特性添加到每个集成成员之前,将特性的名称添加到集成数据变量属性中。

reset(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) data = read(ens);addData = analyzeData(数据);writeToLastMemberRead(实体,addData);结束其他的将集成拆分为多个分区,并并行分析每个分区。N = numpartitions(ens,gcp);parforCt = 1:n subens =分区(ens,n, Ct);Hasdata (subens) data = read(subens);addData = analyzeData(数据);writeToLastMemberRead (suben, addData)结束结束结束

选择故障分类特征

利用上述计算的特征构建分类器,对不同的故障情况进行分类。首先将集成配置为只读取派生的特性和故障标签。

featureVariables = analyzeData(“GetFeatureNames”);ens.DataVariables = [ens.DataVariables;featureVariables];ens.SelectedVariables = [featureVariables;ens.ConditionVariables];重置(实体)

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

featureData = gather(tall(ens))
使用Parallel Pool“local”评估tall表达式:-通过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.98387 0.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真真假3 1.02271.0045 1.4288 0.99553 2.2483 1.9707 0.81324 30984 1.1472 0.032109 112.52 0 4.9934e-06 2.5787e-07 162.13真真假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真真假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真真假3 1.0464 1.0275 1.4477 1.97011 2.8157 3.6314 -0.0428492.2455 1.9449 0.81595 31665 1.1417 0.034182 98.759 0 1.7313e-06 1.6263e-07 230.39真真假3 1.0459 1.0257 1.4402 0.980547 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真真假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真真假3 1.0103 1.0014 1.4183 0.99091 -0.011667 2.2614 1.9853 0.80987 30465 1.0619 0.03651417.093 0 5.2297e-07 1.0704e-07 230.39真真假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真真假3 1.0251 1.0104 1.4291 0.9917 2.8157 3.6314 -0.023609 1.9702 0.81048 30896 1.1261 0.037836 98.463 0 5.0275e-08 9.0495e-08 230.39真真假3 -0.97301 -0.99243 1.3928 0.99326 0.81571 3.6314 -0.012569 2.2589 2.0216 0.81095 29351 1.1383e-11 8.3005e-08 230.39真假真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真真真7 0.026914 -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假假真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.887e -07 1.2185e-07 230.39假假假假0⋮

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

idxResponse = strcmp(featureData.Properties.VariableNames,“SensorDrift”);idxLastFeature = find(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
idxSelectedFeature = featureAnalysis。FeatureWeights > 0.1;classifySD = [featureData(:,idxSelectedFeature), featureData(:,idxResponse)]
classifySD =208×3表SigRangeCumSum PeakSpecKurtosis SensorDrift ______________ ________________ ___________ 28562 162.13 true 29418 226.12 true 31710 162.13 true 30984 162.13 true 30661 230.39 true 31102 230.39 true 31665 230.39 true 31554 230.39 true 30951 162.13 true 30465 230.39 true 30523 230.39 true 30851 230.39 true 30851 230.39 true 30963 226.12 true 1083.8 230.39 false 1466.6 230.39 false

累积和范围的分组直方图让我们深入了解为什么该特征是传感器漂移故障的重要预测因素。

图直方图(classifySD.SigRangeCumSum (classifySD.SensorDrift),“BinWidth”5 e3)包含(“信号累积和范围”) ylabel (“数”)举行直方图(classifySD.SigRangeCumSum (~ classifySD.SensorDrift),“BinWidth”、5 e3)传奇(“传感器漂移故障”“无传感器漂移故障”

直方图显示,信号累积和范围是检测传感器漂移故障的一个很好的特征,但如果仅使用信号累积和范围来分类传感器漂移,则可能需要一个额外的特征,当信号累积和范围低于0.5时,可能会出现假阳性。

考虑轴磨损故障。在这种情况下fscnca函数表明有3个特征是故障的显著预测因子(信号李雅普诺夫指数、峰值频率和谱峰度中的峰值频率),选择这些特征对轴磨损故障进行分类。

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
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 230.39 162.13真的112.52 0 162.13真的109.02 0真的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 0 230.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))信号李雅普诺夫指数) ylabel (“数”)举行直方图(classifySW.SigLyapExponent (~ classifySW.ShaftWear))传奇(“轴磨损故障”“无轴磨损故障”

轴磨损特征选择表明需要多个特征来对轴磨损故障进行分类,分组直方图证实了这一点,因为最重要的特征(在这种情况下,李雅普诺夫指数)在故障和无故障情况下都有相似的分布,这表明需要更多的特征来正确地对该故障进行分类。

最后考虑牙齿故障fscnca函数表明,有3个主要特征(信号累积和范围、信号李雅普诺夫指数和谱峰度中的峰值频率)是故障的重要预测因子。选择这3个特征对牙齿故障进行分类,导致分类器的性能较差。相反,使用6个最重要的特性。

idxResponse = strcmp(featureData.Properties.VariableNames,“ToothFault”);featureAnalysis = fscnca(featureData{:,1:idxLastFeature},featureData. toothfault);[~,idxSelectedFeature] = sort(featureAnalysis.FeatureWeights);classifyTF = [featureData(:,idxSelectedFeature(end-5:end)), featureData(:,idxResponse)]
classifyTF =208×7表PeakFreq SigPeak SigCorrDimension SigLyapExponent PeakSpecKurtosis SigRangeCumSum ToothFault _______________ ________________ _______________ ________________ ______________ __________ 0 0.81571 1.1427 79.531 162.13 28562 false 0 0.81571 1.1362 70.339 226.12 29418 false 0 2.8157 1.1479 125.18 162.13 31710 false 0 2.8157 1.1472 112.52 162.13 30984 false 0 2.8157 1.1472 112.52 109.02 230.39 30661 false 0 2.8157 1.0975 64.499 230.39 31102 false 0 2.8157 1.1417 98.759 230.39 31665 false 0 2.8157 1.134544.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 0.81571 1.1261 98.463 230.39 30896假0 0.81571 1.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))“信号累积和范围”) ylabel (“数”)举行直方图(classifyTF.SigRangeCumSum (~ classifyTF.ToothFault))传奇(“齿轮齿故障”“无齿轮齿故障”

利用上述结果,采用多项式支持向量机对齿轮故障进行分类。将特征表分成用于训练的成员和用于测试和验证的成员。属性创建支持向量机分类器fitcsvm命令。

rng (“默认”%用于再现性cvp = cvpartition(size(classifyTF,1),“KFold”5);%随机划分数据进行训练和验证分类tf = fitcsvm(...classifyTF (cvp.training (1), 1: end-1),...classifyTF (cvp.training(1)、结束),...“KernelFunction”多项式的...“PolynomialOrder”2,...“KernelScale”“汽车”...“BoxConstraint”, 1...“标准化”,真的,...“类名”,(假;真正的]);

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

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

混淆矩阵表明分类器正确地分类了所有非故障条件,但错误地将一个预期故障条件分类为非故障。增加分类器中使用的特征数量有助于进一步提高性能。

总结

本例介绍了从Simulink生成故障数据的工作流程,使用仿真集成清理仿真数据并提取特征。金宝app然后将提取的特征用于构建不同故障类型的分类器。

另请参阅

相关的话题