진단 특징 디자이너를 위한 행렬 데이터 준비하기
이 예제에서는 진단 특징 디자이너로 가져올 수 있도록 행렬 데이터를 준비하는 방법을 보여줍니다. 먼저 하나의 단일 멤버 행렬 및 이와 연결된 결함 코드를 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
___________________ ___________________ _________
{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
을 선택하여 진단 특징 디자이너로 이 앙상블 테이블을 가져올 수 있습니다.
참고 항목
진단 특징 디자이너 | table
| timetable
| array2timetable