Этот пример показывает, как подготовить матричные данные к импорту в Diagnostic Feature Designer. Вы продвигаетесь сначала через преобразование матрицы одно участника и ее связанного кода отказа в table
. Затем вы комбинируете несколько таблиц в одну таблицу ансамбля, которую можно импортировать как мультичленский ансамбль.
Diagnostic Feature Designer принимает членские данные, которые содержатся в отдельных числовых матрицах. Однако таблицы-участники обеспечивают больше гибкости и простоты использования.
С таблицей можно встроить измерения как переменные сигнала, каждый содержащий и независимую переменную и одну или несколько переменных данных. С матрицей можно задать только одну независимую переменную, которая применяется ко всем столбцам данных. Приложение может более легко интерпретировать табличные данные.
С таблицей можно задать информативные имена переменных. С матрицей приложение использует номера столбцов, чтобы идентифицировать векторы данных.
С таблицей можно включать скалярную информацию для каждого участника, такого как условные переменные или функции. С матрицей вы не можете объединить скалярную информацию с информацией сигнала. Это ограничение означает, что вы не можете сгруппировать данные меткой в приложении и не можете оценить эффективность функции в разделении, скажем, данных healthy
из данных unhealthy
.
Таблицу ансамбля еще легче использовать, потому что она комбинирует все таблицы-участники в один набор данных. Чтобы импортировать таблицу ансамбля, вы импортируете всего один элемент, вместо того, чтобы должными быть выбрать несколько элементов.
Загрузите членские данные и данные об отказе кода. Членские данные dmatall
состоят из четырех наборов вибрации с меткой времени и измерений тахометра, принятых интервал 30 секунд. Эти членские матрицы сложены вместе в 3-D матрице. Независимый fc
вектора отказа кода указывает, является ли каждый участник от здорового (0
) или вредный для здоровья (1
) система.
Инициализируйте tv_ensemble table
, который в конечном счете включает и привязанные ко времени данные и код отказа для каждого участника.
load tvmatrixmembers dmatall fc
Запустите путем преобразования одной членской матрицы в таблицу, которая содержит расписания для сигналов измерения и членский код отказа. Извлеките первую членскую матрицу от dmatall
.
memmat = dmatall(:,:,1);
Первые два столбца memmat
содержат измеренный сигнал вибрации. Третье и четвертое содержат измеренный сигнал tacho. Каждый сигнал состоит из независимой переменной (время) и переменная данных (вибрация или tacho измерение). Извлеките эти сигналы в независимые матрицы vibmat
и tachmat
.
vibmat = memmat(:,[1 2]); tachmat = memmat(:,[3 4]);
Преобразуйте каждый сигнал в timetable
. Во-первых, разделите каждый сигнал на его время и компоненты данных. Используйте функциональный seconds
, чтобы преобразовать метки времени в переменные длительности для расписания. Затем введите компоненты сигнала в 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'});
Извлеките код отказа faultcode
от вектора отказа кода fc
.
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
Можно повторить те же шаги обработки на всех членских матрицах, чтобы составить полную таблицу ансамбля. Можно также автоматизировать шаги обработки для каждой матрицы. Для этого сначала инициализируйте таблицу ансамбля. Затем цикл через членские матрицы, чтобы преобразовать участников в таблицы и вставить их в таблицу ансамбля.
Initialize 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
Можно импортировать эту таблицу ансамбля в Diagnostic Feature Designer с помощью мультичленской опции Ансамбля Импорта.
Diagnostic Feature Designer | array2timetable
| table
| timetable