主要内容

이번역페이지는최신내용을담고있지않습니다。최신내용을문으로보려면여기를클릭하십시오。

万博1manbetxSimulink를사용하여결함데이터생성하기

이예제에서는仿真万博1manbetx软件모델을사용하여결함데이터와정상데이터를생성하는방법을보여줍니다。결함데이터와정상데이터는상태모니터링알고리즘을개발하는데사용됩니다。이예제에서는변속기시스템을사용하여톱니결함,센서드리프트결함,축마모결함이있는기어를모델링합니다。

변속기시스템모델

변속기케이싱모델은Simscape动力传动系统블록을사용하여간단한변속기시스템을모델링합니다。변속기시스템은토크구동,구동축,클러치,그리고출력축에연결된고속및저속기어로구성됩니다。

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은기어톱니결함이없음을나타냅니다。

결함데이터와정상데이터시뮬레이션하기

변속기모델은센서드리프트,기어톱니,축마모라는세개의결함유형의존재및그심각도를제어하는여러변수를사용하여구성됩니다。모델 변수SDriftToothFaultGainShaftWear를변경함으로써해당결함유형에대한진동데이터를만들수있습니다。万博1manbetx仿真软件。SimulationInput객체로구성된배열을사용하여다양한시뮬레이션시나리오를정의합니다。예를들어,각모델변수의값으로구성된배열을선택하고ndgrid함수를사용하여각모델변수값의조합에대해万博1manbetx仿真软件。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万博1manbetxk。SimulationInput为each combination of valuessiminput = 万博1manbetxSimulink.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万博1manbetxk。SimulationInput为each combination of valuessiminput = 万博1manbetxSimulink.SimulationInput(mdl);修改模型参数siminput = setVariable(siminput,“ToothFaultGain”toothFaultValues (ct));siminput = setVariable(siminput,“SDrift”sensorDriftValues (ct));siminput = setVariable(siminput,“ShaftWear”shaftWearValues (ct));在数组中收集模拟输入randomSimulationInput(ct) = siminput;结束

이렇게万博1manbetx仿真软件。SimulationInput객체로구성된배열을정의한후에는generateSimulationEnsemble함수를사용하여시뮬레이션을실행합니다。generateSimulationEnsemble함수는기록된데이터를파일에저장하고,신호기록에타임테이블형식을사용하고,저장된파일에万博1manbetx仿真软件。SimulationInput객체를저장하도록모델을구성합니다。generateSimulationEnsemble함수는시뮬레이션이성공적으로완료되었는지여부를나타내는상태플래그를반환합니다。

위코드는그리딩된변수값으로부터110개의시뮬레이션입력값을만들고확률변수값으로부터98개의시뮬레이션입력값을만들어서총208개의시뮬레이션을만들었습니다。208개의시뮬레이션을병렬로실행하면표준데스크탑에서2시간이상소요될수있으며약10 gb의데이터가생성됩니다。편의를위해처음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万博1manbetxk到并行工作者…分析文件并将文件传输给工作人员…完成。[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명령은시뮬레이션결과를가리키는ensemble객체를만들었습니다。이ensemble객체를사용하여앙상블의각멤버에서데이터를준비하고분석합니다。合奏객체는앙상블에있는데이터변수를나열하며,기본적으로모든변수가읽어올대상으로선택됩니다。

实体
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"

분석을위해振动转速计신호와万博1manbetx仿真软件。SimulationInput만읽어들입니다。万博1manbetx仿真软件。SimulationInput에는시뮬레이션에사용되는모델변수값이있으며,이는앙상블멤버의결함레이블을만드는데사용됩니다。앙상블명령을사용하여앙상블멤버데이터를가져옵니다。

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

반환된데이터에서진동신호를추출하고플로팅합니다。

振动=数据。振动{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

万博1manbetxSimulink.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)结束结束结束

hasdata명령과명령을사용하여진동신호를추출하고앙상블의10번째멤버마다진동신호를플로팅합니다。

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”

피크크기에대응하는주파수는여러결함유형을분류하는데유용한특징이될수있습니다。아래코드는모든앙상블멤버에대해위에서언급한특징을계산합니다。(이분석을실행하면준데스크탑에서최대1시간이소될수있습니다。앙상블分区명령을사용하여분석을병렬로실행하는선택적코드가제공되었습니다)。앙상블데이터변수속성에특징의이름이추가되고,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명령을사용합니다。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))传奇(“齿轮齿故障”“无齿轮齿故障”

위특징을사용하면기어톱니결함을분류하는다항식svm이생성됩니다。특징테이블을훈련용으로사용되는멤버와테스트및검증용으로사용되는멤버로분할합니다。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”“关闭”);

정오분류표는분류기가모든비결함상태를올바르게분류하지만결함일것으로예상되는상태하나는결함이아닌것으로잘못분류하고있음을나타냅니다。분류기에서사용되는특징의개수를늘리면성능을추가로개선할수있습니다。

요약

이예제에서는Si万博1manbetxmulink에서결함데이터를생성하는워크플로를설명했습니다。시뮬레이션앙상블을사용하여시뮬레이션된데이터를정리하고특징을추출했고,추출된특징을사용하여여러결함유형의분류기를구축했습니다。

참고 항목

관련 항목