주요 콘텐츠

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

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

R2025b

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

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

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

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

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

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

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

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

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

load tvmatrixmembers dmatall fc

행렬을 테이블로 변환하기

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

memmat = dmatall(:,:,1);

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

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

각 신호를 timetable형으로 변환합니다. 먼저 각 신호를 시간 성분 및 데이터 성분으로 분리합니다. 함수 seconds를 사용하여 타임스탬프를 타임테이블을 위한 duration형 변수로 변환합니다. 그런 다음 신호 성분을 array2timetable에 입력하여 신호를 timetables형인 vibtt 및 tachtt로 변환합니다. 데이터 열에 변수 이름 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
    ___________________    ___________________    _________

    {30001×1 timetable}    {30001×1 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
    ___________________    ___________________    _________

    {30001×1 timetable}    {30001×1 timetable}        1    
    {30001×1 timetable}    {30001×1 timetable}        0    
    {30001×1 timetable}    {30001×1 timetable}        1    
    {30001×1 timetable}    {30001×1 timetable}        0    

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

참고 항목

| | |

도움말 항목