Main Content

진단 특징 디자이너를 위한 행렬 데이터 준비하기

이 예제에서는 진단 특징 디자이너로 가져올 수 있도록 행렬 데이터를 준비하는 방법을 보여줍니다. 먼저 하나의 단일 멤버 행렬 및 이와 연결된 결함 코드를 table형으로 변환하는 단계를 수행합니다. 그런 다음, 하나의 다중 멤버 앙상블로 가져올 수 있도록 여러 테이블을 하나의 단일 앙상블 테이블로 결합합니다.

진단 특징 디자이너는 개별 숫자형 행렬에 포함된 멤버 데이터를 받을 수 있습니다. 그러나 멤버 테이블은 더 많은 유연성과 사용 편의성을 제공합니다.

  • 테이블을 사용하면 측정값을 각각 하나의 독립 변수와 하나 이상의 데이터 변수를 모두 포함하는 신호 변수로 내장할 수 있습니다. 행렬을 사용하면 모든 데이터 열에 적용되는 하나의 독립 변수만 지정할 수 있습니다. 앱은 테이블 데이터를 보다 쉽게 해석할 수 있습니다.

  • 테이블을 사용하면 유용한 변수 이름을 지정할 수 있습니다. 행렬을 사용하면 앱은 열 번호를 사용하여 데이터 벡터를 식별합니다.

  • 테이블을 사용하면 상태 변수 또는 특징과 같이 각 멤버에 대한 스칼라 정보를 포함시킬 수 있습니다. 행렬을 사용하면 스칼라 정보를 신호 정보와 결합할 수 없습니다. 이러한 제한 사항으로 인해 앱에서 레이블별로 데이터를 그룹화할 수 없으며 unhealthy 데이터에서 healthy 데이터를 분리할 때 특징이 효과적인지 평가할 수 없게 됩니다.

앙상블 테이블은 모든 멤버 테이블을 하나의 데이터셋으로 결합하므로 사용하기가 훨씬 더 쉽습니다. 앙상블 테이블을 가져오려면 여러 항목을 선택할 필요 없이 하나의 항목만 가져오면 됩니다.

멤버 행렬 및 결함 코드 불러오기

멤버 데이터 및 결함 코드 데이터를 불러옵니다. 멤버 데이터 dmatall은 30초 간격으로 측정한, 타임스탬프가 있는 네 세트의 진동 및 회전속도계 측정값으로 구성됩니다. 이러한 멤버 행렬들은 3차원 행렬에 함께 누적됩니다. 독립적인 결함 코드 벡터 fc는 각 멤버가 정상(0) 시스템에서 제공되는지 또는 비정상(1) 시스템에서 제공되는지를 나타냅니다.

tv_ensemble table을 초기화합니다. 최종적으로 여기에는 각 멤버에 대한 시간 태그가 지정된 데이터 및 결함 코드가 모두 포함되게 됩니다.

load tvmatrixmembers dmatall fc

행렬을 테이블로 변환하기

먼저, 하나의 단일 멤버 행렬을 측정 신호 및 멤버 결함 코드를 위한 타임테이블들을 포함하는 하나의 테이블로 변환합니다. dmatall에서 첫 번째 멤버 행렬을 추출합니다.

memmat = dmatall(:,:,1);

memmat의 처음 두 열은 측정된 진동 신호를 포함합니다. 세 번째 열과 네 번째 열은 측정된 회전속도계 신호를 포함합니다. 각 신호는 독립 변수(시간)와 데이터 변수(진동 또는 회전속도계 측정값)로 구성됩니다. 이러한 신호를 독립 행렬 vibmattachmat로 추출합니다.

vibmat = memmat(:,[1 2]);
tachmat = memmat(:,[3 4]);

각 신호를 timetable형으로 변환합니다. 먼저 각 신호를 시간 성분 및 데이터 성분으로 분리합니다. 함수 seconds를 사용하여 타임스탬프를 타임테이블을 위한 duration형 변수로 변환합니다. 그런 다음 신호 성분을 array2timetable에 입력하여 신호를 timetables형인 vibtttachtt로 변환합니다. 데이터 열에 변수 이름 Data를 할당합니다. 타임테이블은 자동으로 시간 열에 이름 Time을 할당합니다.

vibtime = seconds(vibmat(:,1));
vibdata = vibmat(:,2);
tachtime = seconds(tachmat(:,1));
tachdata = tachmat(:,2);
vibtt = array2timetable(vibdata,'RowTimes',vibtime,'VariableNames',{'Data'});
tachtt = array2timetable(tachdata,'RowTimes',tachtime,'VariableNames',{'Data'});

결함 코드 벡터 fc에서 결함 코드 faultcode를 추출합니다.

faultcode = fc(1);

두 개의 타임테이블, 즉 결함 코드 스칼라의 타임테이블과 설명적 변수 이름의 타임테이블을 포함하는 멤버 테이블을 조합합니다.

memtable = table({vibtt},{tachtt},faultcode,'VariableNames',{'Vibration','Tacho','FaultCode'});

이렇게 해서 여러 멤버 테이블을 포함하는 앙상블 테이블에 삽입할 수 있는 하나의 멤버 테이블을 갖게 되었습니다. 앙상블 테이블을 초기화하고 첫 번째 멤버를 삽입합니다.

tv_ensemble_table = table();
tv_ensemble_table(1,:) = memtable
tv_ensemble_table=1×3 table
         Vibration                Tacho           FaultCode
    ___________________    ___________________    _________

    {30001x1 timetable}    {30001x1 timetable}        1    

여러 개의 멤버 행렬을 앙상블 테이블로 변환하기

모든 멤버 행렬에 대해 동일한 처리 단계를 반복하여 전체 앙상블 테이블을 만들 수 있습니다. 또한 각 행렬에 대한 처리 단계를 자동화할 수 있습니다. 이렇게 하려면 먼저 앙상블 테이블을 초기화하십시오. 그런 다음 멤버 행렬들을 순환하면서 차례로 멤버를 테이블로 변환한 다음 앙상블 테이블에 삽입합니다.

tv_ensemble_table을 초기화합니다.

tv_ensemble_table = table();

루프를 통해 순환하면서 차례로 변환 및 삽입 시퀀스를 처리합니다.

for idx = 1:size(dmatall,3)
    vibmat = dmatall(:,[1 2],idx);
    tachmat = dmatall(:,[3 4],idx);
vibtt = array2timetable(vibmat(:,2),'RowTimes',seconds(vibmat(:,1)),'VariableNames',{'Data'});
tachtt = array2timetable(tachmat(:,2),'RowTimes',seconds(tachmat(:,1)),'VariableNames',{'Data'});
tv_member = table({vibtt},{tachtt},fc(idx),'VariableNames',{'Vibration','Tacho','FaultCode'});
tv_ensemble_table(idx,:) = tv_member;
end

단일 앙상블 테이블을 만들었습니다. 각 행은 하나의 멤버를 나타내며 각 멤버는 진동 및 회전속도계 신호와 스칼라 결함 코드를 나타내는 두 개의 타임테이블로 구성됩니다.

tv_ensemble_table
tv_ensemble_table=4×3 table
         Vibration                Tacho           FaultCode
    ___________________    ___________________    _________

    {30001x1 timetable}    {30001x1 timetable}        1    
    {30001x1 timetable}    {30001x1 timetable}        0    
    {30001x1 timetable}    {30001x1 timetable}        1    
    {30001x1 timetable}    {30001x1 timetable}        0    

새 세션을 클릭하고 추가 변수 선택 창에서 DataTable을 선택하여 진단 특징 디자이너로 이 앙상블 테이블을 가져올 수 있습니다.

참고 항목

| | |

관련 항목