主要内容

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

金宝app仿真软件를사용하여결함데이터생성하기

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

변속기시스템모델

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

mdl =“pdmTransmissionCasing”;开放式系统(mdl)

변속기시스템에는케이싱진동을모니터링하는진동센서가있습니다。케이싱모델은축의각변위를케이싱의선형변위로변환합니다。케이싱은질량——용수철-감쇠시스템으로모델링되고,진동(케이싱가속도)은케이싱에서측정됩니다。

open_system ([mdl' /套管'])

결함 모델링

변속기시스템은진동센서드리프트,톱니결함및축마모에대한결함모델을포함합니다。센서드리프트는센서모델에오프셋을추가하여쉽게모델링됩니다。오프셋은모델변수SDrift에 의해 제어됩니다. 여기서SDrift = 0은센서결함이없음을나타냅니다。

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

축 마모 결함은 变型子系统으로 모델링됩니다. 이 사례에서는 变型子系统이 축 감쇠만 변경하지만, 变型子系统을 사용해 축 모델 구현 자체를 완전히 변경할 수도 있습니다. 선택된 变体는 모델 변수沙弗韦尔에 의해 제어됩니다. 여기서ShaftWear = 0은 축 결함이 없음을 나타냅니다.

open_system ([mdl“/轴”])

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

기어톱니결함은구동축회전에서고정된위치에외란토크를주입하여모델링됩니다。축위치는라디안단위로측정되며,축위치0근가방의미소범위내에있을때축에외란력이가해집니다。외란의크기는모델변수牙缝增益에 의해 제어됩니다. 여기서ToothFaultGain = 0은기어톱니결함이없음을나타냅니다。

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

변속기모델은센서드리프트,기어톱니,축마모라는세개의결함유형의존재및그심각도를제어하는여러변수를사용하여구성됩니다。모델변수SDrift牙缝增益沙弗韦尔를 변경함으로써 해당 결함 유형에 대한 진동 데이터를 만들 수 있습니다.金宝app模拟输入객체로구성된배열을사용하여다양한시뮬레이션시나리오를정의합니다。예를들어,각모델변수의값으로구성된배열을선택하고ndgrid함수를사용하여각모델변수값의조합에대해金宝app模拟输入을 만듭니다.

toothFaultArray=-2:2/10:0;%牙齿故障增益值sensorDriftArray = 1:0.5:1;传感器漂移偏移值shaftWearArray = [0 -1];%适用于驱动轴条件的变型%创建包含所有值组合的n维数组[toothFaultValues, sensorDriftValues shaftWearValues] =...ndgrid (toothFaultArray sensorDriftArray shaftWearArray);对于ct =元素个数(toothFaultValues): 1:1创建一个Simulin金宝appk。模拟输入为每个值的组合siminput = 金宝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(齿故障值):-1:1创建一个Simulin金宝appk。模拟输入为每个值的组合siminput = 金宝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模拟输入객체로구성된배열을정의한후에는generateSimulationEnsemble함수를사용하여시뮬레이션을실행합니다。generateSimulationEnsemble함수는기록된데이터를파일에저장하고,신호기록에타임테이블형식을사용하고,저장된파일에金宝app模拟输入객체를저장하도록모델을구성합니다。generateSimulationEnsemble함수는시뮬레이션이성공적으로완료되었는지여부를나타내는상태플래그를반환합니다。

위코드는그리딩된변수값으로부터110개의시뮬레이션입력값을만들고확률변수값으로부터98개의시뮬레이션입력값을만들어서총208개의시뮬레이션을만들었습니다。208개의시뮬레이션을병렬로실행하면표준데스크탑에서2시간이상소요될수있으며약10 gb의데이터가생성됩니다。편의를위해처음10개의시뮬레이션만실행하기로합니다。

%运行模拟并创建一个集成来管理模拟结果如果~ (fullfile (pwd,存在“数据”),“dir”) mkdir (fullfile (pwd,“数据”))%创建用于存储结果的目录结束runAll=true;如果runAll [ok,e] = generatessimulationensemble ([gridSimulationInput, randomSimulationInput],...完整文件(pwd,“数据”),“使用并行”,真正的);其他的[ok,e] = generateSimulationEnsemble(gridSimulationInput(1:10), fullfile(pwd),“数据”));% #好< * UNRCH >结束
[28-Feb-2018 13:17:31]检查并行池的可用性…[28-Feb-2018 13:17:37]加载Simulin金宝appk on parallel workers…分析和传送文件给工人…完成。[28-Feb-2018 13:17:56]配置并行工作器上的模拟缓存文件夹…[28-Feb-2018 13:17:57] Running SetupFcn on parallel workers…[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次模拟运行中的2次[28-Feb-2018 13:18:29]完成了208次模拟运行中的3次…[28-Feb-2018 13:24:28]在208次模拟运行中完成204次[28-Feb-2018 13:24:28]在208次模拟运行中完成205次[28-Feb-2018 13:24:28]在208次模拟运行中完成206次[28-Feb-2018 13:24:28]在208次模拟运行中完成207次[28-Feb-2018 13:24:28]在208次模拟运行中完成207次[28-Feb-2018 13:24:29]在208次模拟运行中完成208次[28-Feb-2018 13:24:33]清理并行 workers...

generateSimulationEnsemble이실행되어시뮬레이션결과를기록했습니다。simulationEnsembleDatastore명령을사용하여시뮬레이션결과를처리하고분석하기위한시뮬레이션앙상블을만듭니다。

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

시뮬레이션결과의처리

simulationEnsembleDatastore명령은 시뮬레이션 결과를 가리키는 表演团体객체를 만들었습니다. 이 表演团体객체를 사용하여 앙상블의 각 멤버에서 데이터를 준비하고 분석합니다. 表演团体객체는 앙상블에 있는 데이터 변수를 나열하며, 기본적으로 모든 변수가 읽어 올 대상으로 선택됩니다.

恩斯
ens = simulationEnsembleDatastore与属性: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”“振动”“xFinal”“xout”

분석을위해振动转速计신호와金宝app模拟输入만읽어들입니다。金宝app模拟输入에는 시뮬레이션에 사용되는 모델 변수 값이 있으며, 이는 앙상블 멤버의 결함 레이블을 만드는 데 사용됩니다. 앙상블阅读명령을사용하여앙상블멤버데이터를가져옵니다。

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

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

振动=数据.振动{1};绘图(振动.时间,振动.数据)标题(“振动”) ylabel (“加速”

시뮬레이션의처음10초는변속기시스템이시작될때의데이터를포함합니다。분석을위해이데이터는버립니다。

idx =振动。时间> =秒(10);振动=振动(idx:);振动。时间=振动。时间——vibration.Time (1);

转速计신호는구동축과부하축의회전에대한펄스를포함하지만분석에서는,특히시간동기평균화에서는축회전의시간이필요합니다。다음코드는转速计데이터의 처음 10초를 버리고achoPulses의축회전시간을구합니다。

tacho=data.tacho{1};idx=tacho.Time>=秒(10);tacho=tacho(idx,:);绘图(tacho.Time,tacho.data)标题(转速计脉冲的)传说(“驱动轴”“负载轴”负载轴比传动轴旋转得慢

idx = diff(taco . data (:,2)) > 0.5;tachoPulses = tacho.Time(找到(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속성은 시뮬레이션에 사용되는 결함 파라미터의 값을 포함하며, 이 값을 사용하여 각 앙상블 멤버의 결함 레이블을 만들 수 있습니다.

vars=data.simulationput{1}.Variables;idx=strcmp({vars.Name},“SDrift”);如果任何(idx) sF = abs(vars(idx).Value) > 0.01;%小漂移值不是故障其他的科幻小说= false;结束idx=strcmp({vars.Name},“ShaftWear”);如果任何(idx) sV = vars(idx)值< 0;其他的sV=假;结束如果任何(idx) idx = strcmp ({var。名称},“ToothFaultGain”);sT = abs(vars(idx).Value) < 0.1;%小齿故障值不是故障其他的圣= false结束故障代码=sF+2*sV+4*sT;%捕获不同故障条件的故障代码

처리된 진동 및 회전속도계 신호와 결함 레이블은 나중에 사용하기 위해 앙상블에 추가됩니다.

sdata=表({振动},{tachoPulses},sF,sV,sT,故障代码,...“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”];

위코드는앙상블의멤버하나를처리하는데사용되었습니다。모든앙상블멤버를처리하기위해위코드를함수准备数据로 변환하고, 앙상블hasdata명령을 통해 루프를 사용하여 모든 앙상블 멤버에准备数据를 적용합니다. 앙상블 멤버는 앙상블을 분할하고 앙상블 파티션을 병렬로 처리함으로써 병렬 처리할 수 있습니다.

reset(ens) runLocal = false;如果runLocal%处理集合中的每个成员虽然Hasdata (ens) data = read(ens);addData = prepareData(数据);writeToLastMemberRead(实体,addData)结束其他的将整个系统分割成多个分区,并并行处理每个分区n = numpartitions(实体、gcp);parforct=1:n subens=分区(ens,n,ct);虽然Hasdata (subens) data = read(subens);addData = prepareData(数据);writeToLastMemberRead (suben, addData)结束结束结束

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

重置(ens) ens.SelectedVariables =“振动”;图,ct = 1;虽然Hasdata (ens) data = read(ens);如果mod(ct,10) == 0情节(vibration.Time vibration.Data)结束ct=ct+1;结束持有标题(振动信号的) ylabel (“加速”

시뮬레이션된데이터의분석

데이터가정리되고전처리되었으니이제데이터에서특징을추출하여여러결함유형을분류하는데사용할특징을판단할준비가되었습니다。먼저,처리된데이터만반환하도록앙상블을구성합니다。

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

앙상블의 각 멤버에 대해 몇 가지 시간 및 스펙트럼 기반 특징을 계산합니다. 여기에는 신호 통계량(신호의 평균, 분산, 피크 간 차이), 비선형 신호 특징(근사 엔트로피, 랴푸노프 지수), 스펙트럼 특징(진동 신호의 시간 동기 평균의 피크 주파수, 시간 동기 평균 포락선 신호의 전력)이 포함됩니다.analyzeData함수는추출된특징의전체목록을포함합니다。한가지예로시간동기평균진동신호의스펙트럼계산을살펴보겠습니다。

Reset (ens) data = read(ens)
资料=1×2表振动TachoPulses  ___________________ ______________ [ 30106×1时间表][8×1时间)
振动= data.Vibration {1};%将振动信号插值到适合fft分析的周期时基上np=2^楼层(对数(高度(振动))/对数(2));dt=振动时间(结束)/(np-1);tv=0:dt:振动时间(结束);y=重定时(振动,tv,“线性”);%计算振动信号的时间同步平均tp =秒(data.TachoPulses {1});vibrationTSA = tsa (y, tp);图绘制(vibrationTSA.ttTime vibrationTSA.tsa)标题(‘振动时间同步平均’) ylabel (“加速”

%计算时间同步平均的频谱np=numel(振动tsa);f=fft(振动tsa.tsa.*hamming(np))/np;frTSA=f(1:floor(np/2)+1);%TSA频率响应wTSA=(0:np/2)/np*(2*pi/s(dt));TSA频谱频率百分比mTSA = abs (frTSA);% TSA频谱幅度图semilogx (wTSA, 20 * log10 (mTSA))标题(“振动谱”)包含(“rad / s”

피크크기에대응하는주파수는여러결함유형을분류하는데유용한특징이될수있습니다。아래코드는모든앙상블멤버에대해위에서언급한특징을계산합니다。(이분석을실행하면표준데스크탑에서최대1시간이소요될수있습니다。앙상블分区명령을사용하여분석을병렬로실행하는선택적코드가제공되었습니다)。앙상블데이터변수속성에특징의이름이추가되고,writeToLastMemberRead가호출되어각앙상블멤버에계산된특징이추가됩니다。

reset(ens) ens. datavvariables = [ens. datavvariables;...“SigMean”“信号中值”“SigRMS”“SigVar”“SigPeak”“SigPeak2Peak”“偏斜”...“信号峰度”“SigCrestFactor”“西格玛”“SigRangeCumSum”“SigCorrDimension”“sigproxentropy”...“SigLyapExponent”“PeakFreq”“HighFreqPower”“EnvPower”“PeakSpecKurtosis”];如果runLocal虽然Hasdata (ens) data = read(ens);addData = analyzeData(数据);writeToLastMemberRead(实体,addData);结束其他的%将集成拆分为多个分区,并并行分析每个分区n = numpartitions(实体、gcp);parforct=1:n subens=分区(ens,n,ct);虽然Hasdata (subens) data = read(subens);addData = analyzeData(数据);writeToLastMemberRead (suben, addData)结束结束结束

결함 분류를 위한 특징 선택

위에서계산된특징은여러결함상태를분류하는분류기를구축하는데사용됩니다。먼저도출된특징과결함레이블만읽도록앙상블을구성합니다。

featureVariables=分析数据(“GetFeatureNames”);ens.DataVariables=[ens.DataVariables;featureVariables];ens.SelectedVariables=[featureVariables;ens.ConditionVariables];reset(ens)

모든앙상블멤버의특징데이터를테이블하나로수집합니다。

featureData =收集(高(ens))
使用Parallel Pool 'local'计算tall表达式:-通过1 / 1:1.8 min完成
featureData =208×22表SigMean SigMedian SigRMS SigVar SigPeak SigPeak 2peak 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 true false false 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 true false false 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 true true false 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.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000⋮
idxSelectedFeature = featureAnalysis。FeatureWeights > 0.1;classifySD = [featureData(:,idxSelectedFeature), featureData(:,idxResponse)]
分类=208×3表我们的研究范围是,我们的研究范围是,我们的研究范围是,我们的研究范围是,我们的研究范围是,我们的研究范围是,我们的研究范围是,我们的研究价格是,峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值峰值1.12正确的1083.8230.39假1466.6 230.39假⋮

누적합 범위의 그룹화된 히스토그램을 보면 이 특징이 센서 드리프트 결함의 유의미한 예측 변수인 이유를 알 수 있습니다.

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

히스토그램플롯은신호누적합범위가센서드리프트결함을검출하기위한좋은특징이긴하나,신호누적합범위만사용하여센서드리프트를분류할경우신호누적합범위가0.5밑으로떨어지는거짓양성이있을수있으므로추가특징이필요함을보여줍니다。

축마모결함을살펴봅니다。fscnca함수는 3.개의 특징(신호 랴푸노프 지수, 피크 주파수, 스펙트럼 첨도의 피크 주파수)이 결함의 유의미한 예측 변수임을 나타냅니다. 이들 특징을 선택하여 축 마모 결함을 분류합니다.

idxResponse = strcmp (featureData.Properties.VariableNames,“ShaftWear”);featureAnalysis = fscnca (featureData {: 1: idxLastFeature}, featureData.ShaftWear);featureAnalysis。FeatureWeights
ans=18×10.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000⋮
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 0230.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⋮

신호 랴푸노프 지수의 그룹화된 히스토그램은 이 특징이 단독으로는 좋은 예측 변수가 될 수 없는 이유를 알려줍니다.

图直方图(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] = (featureAnalysis.FeatureWeights)进行排序;classifyTF = [featureData(:,idxSelectedFeature(end-5:end)), featureData(:,idxResponse)]
分类TF=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假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 30465假0 2.8157 1.1371 84.568 230.39 30523假0 2.8157 1.1261 98.463 0.81571 230.39 30896错误01.1277 42.887 230.39 29351 true 0 2.8157 1.1486 99.426 226.12 30963 true 9.998 1.8157 1.1277 44.448 230.39 1083.8 true 1.8618 1.8157 1.1368 93.95 230.39 1466.6 false ⋮
图直方图(classifyTF.SigRangeCumSum (classifyTF.ToothFault))包含(“信号累积和范围”) ylabel (“数”)举行直方图(classifyTF.SigRangeCumSum(~classifyTF.ToothFault))保持传奇(“齿故障”'无齿轮齿故障'

위 특징을 사용하면 기어 톱니 결함을 분류하는 다항식 支持向量机이 생성됩니다. 특징 테이블을 훈련용으로 사용되는 멤버와 테스트 및 검증용으로 사용되는 멤버로 분할합니다.fitcsvm명령을사용하여훈련멤버로svm분류기를만듭니다。

rng (“默认”%的再现性本量利= cvpartition(大小(classifyTF, 1),“KFold”5);%随机划分数据进行培训和验证classifierTF=fitcsvm(...classifyTF (cvp.training (1), 1: end-1),...classifyTF(cvp.培训(1),结束),...“内核函数”“多项式”...“PolynomialOrder”2,...“KernelScale”“自动”...“BoxConstraint”,1,...“标准化”,真的,...“类名”,[假;真];

预测명령을 사용하여 분류기로 테스트 점을 분류하고, 정오분류표를 사용하여 예측의 성능을 확인합니다.

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

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

요약

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

참고항목

관련항목