Анатомия сгенерированного приложением кода MATLAB

С Diagnostic Feature Designer можно сгенерировать код MATLAB®, который автоматизирует расчеты для функций и переменных, которые вы выбираете. Этот сгенерированный код принимает любые данные ансамбля, которые сконфигурированы тот же путь как данные ансамбля, которые вы импортировали в приложение и генерируете таблицу новой возможности, а также вычисленные сигналы, спектры и занимающие место таблицы, которые могут использоваться для анализа функции или обучения модели. Код реплицирует различные варианты, которые вы устанавливаете в рамках приложения и можете выполнить:

  • Расчет полный сигнала сигналов и функций каждого члена

  • Рейтинг для функций

  • Расчеты уровня ансамбля для охарактеризования поведения ансамбля

  • Параллельная обработка

  • Обработка сегментированных сигналов, также известных как обработку frame-based

Управление ансамбля является основным компонентом сгенерированного кода. Для получения информации об ансамблях данных и типах переменных ансамбля, смотрите Ансамбли Данных для Мониторинга состояния и Прогнозирующего Обслуживания.

Можно сравнить это функциональное описание с фактическим кодом путем генерации собственного кода в приложении. Для получения дополнительной информации смотрите, что Автоматическое Извлечение признаков Использует Сгенерированный код MATLAB. Для примера, показывающего, как сгенерировать код, смотрите, Генерируют функцию MATLAB в Diagnostic Feature Designer. Для примера, который предоставляет настройку основанной на системе координат генерации кода, смотрите, Выполняют Предвещающую Функцию, Занимающую место для Ухудшающейся Системы Используя Diagnostic Feature Designer.

Поток основной функции

Фигура иллюстрирует основной функциональный поток сгенерированного кода. В этой схеме функция возвращает обе функции и выведенные переменные, использует последовательную обработку и работает с полными сигналами.

Фигура повреждает поток кода в три главных раздела: Инициализируйте, Цикл через члены, и Создайте Выходные параметры.

  • Блок Initialize выполняет начальную настройку. Определенные операции зависят от типа данных, которые вы первоначально импортировали и переменные и функции, которые вы задали для генерации кода.

  • Блочные операции Loop Through Members выполняют всю переменную и показывают расчеты один член за один раз.

  • Извлечения Create Outputs и форматы таблица функции и полный ансамбль.

Входные параметры

Функция работает с входными данными, который сопоставим с данными, которые вы первоначально импортировали в приложение. Когда вы планируете сгенерировать код из приложения, импортируя ваши данные в том же формате, когда данные, к которым вы планируете применить свой код, рекомендуются.

  • Если вы импортировали переменную рабочей области, такую как таблица ансамбля или массив ячеек из памяти, функция требует таблицы ансамбля или массива ячеек.

  • Если вы импортировали файл или datastore ансамбля симуляции, функция требует файла или datastore ансамбля симуляции.

Входные данные для кода должны иметь переменную структуру, которая похожа на данные, которые вы импортировали в приложение. Ваш входной ансамбль может включать дополнительные переменные также. Код игнорирует дополнительные переменные и не отмечает их как ошибки.

Инициализация

В блоке Initialize код конфигурирует ансамбль, который содержит переменные и для входных параметров и для выходных параметров, которые функция вычисляет в блоке Loop Through Members. Они вычислили выходные параметры, включают переменные, и показывает, вы явным образом выбрали, когда вы сгенерировали код и любые дополнительные переменные, такие как a tsa сигнал, что любая из ваших функций требует.

  • Если входные данные являются таблицей или массивом ячеек, код создает workspaceEnsemble объект, который включает переменные, соответствующие переменным входных данных. Этот объект похож на объект datastore ансамбля, но он работает с данными в памяти, а не во внешних файлах.

  • Если входные данные являются a simulationEnsembleDatastore или a fileEnsembleDatastore объект, код работает с объектом непосредственно.

Если код инициализирует ансамбль, код добавляет все переменные и функции, которые будут вычислены во время расчетов члена. Код устраняет избыточные переменные с unique функция.

Рисунок показывает пример ансамбля рабочей области и его переменных данных. Переменные данных идентифицируют входные сигналы, выходные сигналы и спектры и функции.

Ключевые связанные с ансамблем функции во время инициализации включают:

  • reset — Сбросьте ансамбль к его исходному непрочитанному состоянию так, чтобы код читал с начала

  • workspaceEnsemble — Объект Ensemble, который управляет данными в памяти

  • fileEnsembleDatastore — Объект Ensemble, который управляет данными во внешних файлах

  • simulationEnsembleDatastore — Объект Ensemble, который управляет симулированными данными во внешних журналах или файлах

Примечание

Во время инициализации функция не предварительно выделяет массивы, чтобы использовать во время обработки. Это отсутствие предварительного выделения для ясности и гибкости, поскольку код должен работать с входным ансамблем с любым числом членов. Во время последующих циклов расчета, которые добавляют недавно вычисленные данные к промежуточным таблицам результатов, код подавляет код MATLAB предупреждения Анализатора о предварительном выделении с помощью встроенного комментария %#ok<AGROW>. Для получения информации о настройках сообщения Анализатора кода см. Настройки анализатора кода.

Цикл расчета члена

В цикле расчета члена функция выполняет все специфичные для члена расчеты, один член за один раз.

Серия read вызовы функции инициируют цикл, читая каждый член ансамбля по очереди, пока нет никаких оставленных членов ансамбля. Расчеты, которые следуют за каждым read команда обеспечивает, для того члена, всех заданных переменных и функций.

Рабочая таблица результатов уровня члена собирает результаты, когда каждый переменный или набор функций вычисляется.

Рисунок показывает пример таблицы результатов уровня члена. Здесь, таблица результатов содержит две встроенных таблицы, которые содержат функции и встроенное расписание, которое содержит вычисленный сигнал.

Если все расчеты завершены, код добавляет таблицу результатов полноправного члена назад основному ансамблю.

Расчеты члена используют try/catch комбинация, чтобы обработать входные данные, которые не могут быть обработаны. Этот подход препятствует тому, чтобы неправильные данные остановили выполнение кода.

Код использует эти ключевые функции управления ансамбля:

  • read — Считайте следующий член ансамбля

  • readMemberData — Извлеките данные от члена ансамбля для определенной переменной

  • writeToLastMemberRead — Запишите данные члену ансамбля

  • table — Массив ансамбля, который содержит переменные и функции в именованных столбцах и члены в строках

  • array2table — Преобразуйте массив в таблицу

  • timetable — Специализированная специфичная для члена таблица, которая содержит сигналы в столбцах именованной переменной и определенное время для каждой строки

  • array2timetable — Преобразуйте массив в расписание

Выходные параметры

Основной выход сгенерированной функции является таблицей функции, который извлечения кода с помощью функции readFeatureTable. Этот выход является тем же самым, используете ли вы ансамбль рабочей области или datastore ансамбля, как введено. Таблица функции содержит сами скалярные функции, а также условные переменные.

Рисунок показывает пример таблицы функции. Каждая строка представляет член. Первый столбец содержит условную переменную, и последующие столбцы содержат скалярное значение функции.

Используйте дополнительный второй выходной аргумент, чтобы возвратить сам ансамбль. Если вход к вашей функции является таблицей или массивом ячеек, функция преобразует ансамбль рабочей области в таблицу с помощью readall функция, и возвращает таблицу.

Рисунок показывает пример выходной таблицы. Каждая строка представляет член. Первые два столбца являются входными переменными, и остальные столбцы содержат функции или вычисленные переменные.

Если ваша функция основана на исходном импорте объекта datastore ансамбля, функция возвращает обновленный объект datastore.

Код включает эти ключевые функции для выходных параметров:

  • readFeatureTable — Считайте условную переменную и покажите данные из набора данных ансамбля в таблицу

  • readall — Считывайте все данные от набора данных ансамбля в таблицу

Рейтинг

Когда вы выбираете одну или несколько занимающих место таблиц, когда вы генерируете код, функция включает занимающий место раздел, который следует за экстракцией таблицы функции, как показано на рисунке. Рисунок показывает деталь только для фрагментов блок-схемы, которые изменяются от фигуры Потока Основной функции. В Создают Выходные параметры, рисунок показывает все выходные аргументы при использовании рейтинга.

Чтобы инициализировать рейтинг, код извлекает значения функции и метки (значения условной переменной) из таблицы функции. Код затем задает группы класса путем преобразования меток в числовые значения с помощью функции grp2idx присваивать индекс группы каждой функции. Например, если условная переменная FaultCode имеет, маркирует "Faulty", "Degraded", и "Healthy", grp2idx группирует члены с этими метками в группы 1, 2, и 3.

Для каждого метода рейтинга код вычисляет счет к каждой функции с этими шагами:

  1. Нормируйте функции с помощью заданной схемы нормализации.

  2. Вызовите функцию для метода рейтинга, с помощью маски индекса группы, чтобы разделить группы. Определенный синтаксис зависит от функции метода рейтинга.

  3. Если фактор важности корреляции задан, обновите использование счета correlationWeightedScore. Взвешивание корреляции понижает множество функций, которые высоко коррелируются к более высокопоставленным функциям, и которые поэтому избыточны.

  4. Добавьте баллы к матрице выигрыша и метод к списку методов.

Код затем составляет занимающую место таблицу при помощи sortrows отсортировать строки по множеству метода Sort By, заданного в приложении во время генерации кода.

Рисунок показывает пример занимающей место таблицы для четырех функций, отсортированных по результатам t-критерия Стьюдента.

Код использует эти ключевые функции для рейтинга управления:

  • grp2idx — Преобразуйте метки в числовые значения

  • correlationWeightedScore — Баллы рейтинга функции веса с коэффициентом корреляции

  • sortrows — Отранжируйте признаки путем сортировки строк по счету

Статистика ансамбля и остатки

Статистическая величина ансамбля является статистической метрикой, которая представляет целый ансамбль, а не отдельный член. Например, в приложении, можно задать максимум ансамбля для сигнала вибрации. Получившаяся статистическая величина одно члена содержит, в течение каждого раза выборка, значение вибрации, которое является максимумом всех значений вибрации члена.

Можно использовать статистику ансамбля, чтобы вычислить остатки путем вычитания той же метрики ансамбля из всех сигналов члена для определенной переменной. Например, если среднее значение ансамбля представляет среднюю рабочую точку, можно вычесть среднее значение от всех членов, чтобы изолировать поведение вокруг рабочей точки. Изолированный сигнал является формой residue.

Фигура иллюстрирует поток кода, когда вы задаете функции на основе среднего остаточного сигнала.

В этом потоке существует два отдельных цикла члена. Первый цикл члена вычисляет статистику ансамбля. Второй цикл члена выполняет сигнал, спектр и обработку функции. В блок-схеме второй член, обрабатывающий цикл, иллюстрирует сигнал остатка и основанные на остатке шаги обработки функции.

Цикл 1: обработка статистики ансамбля

Вычислить статистику ансамбля для заданной переменной, код первые циклы через члены при поддержании аккумулятора. В данной точке в циклической последовательности аккумулятор может содержать, например:

  • Максимальное значение сигналов вычисляется до сих пор

  • Рабочая сумма всех значений данных и количества итерации

  • Минимальное значение сигналов вычисляется до сих пор

Рисунок показывает пример содержимого аккумулятора и рабочей суммы и количества в mean переменная.

В конце итераций цикла код передает ансамбль макс. и сигналы min от аккумулятора до статистики ансамбля макс. и переменных min. Код вычисляет, ансамбль подразумевают под делением суммы ансамбля количеством количеств.

Рисунок показывает пример итоговой таблицы статистики ансамбля и итогового mean переменная, которая теперь содержит средний сигнал.

Цикл 2: обработка остатка

В основном члене, обрабатывающем цикл, код создает переменные сигнала остатка путем вычитания заданной статистики из заданных сигналов и группирует эти остатки таким же образом как другие сигналы и функции.

Рисунок показывает пример таблицы результата члена с остатками. Таблица содержит два сигнала остатка и два набора функций, вычисленные из тех сигналов.

Параллельная обработка

Когда вы задаете параллельную обработку, код делит члены ансамбля в подансамбли и выполняет полноправного члена, обрабатывающего цикл параллельно для каждого подансамбля, когда рисунок показывает.

Если основным ансамблем является workspaceEnsemble объект, затем в конце каждого обрабатывающего раздел цикла, код сохраняет обновленный подансамбль как ячейку в массиве, который хранит результаты для всех подансамблей. Следующий рисунок показывает пример этого массива наряду с первыми двумя ячейками. В этом рисунке каждый раздел содержит 13 членов.

Если основной ансамбль является ансамблем рабочей области, то, если вся обработка раздела завершена, код повторно собирает разделы результата и обновляет основной ансамбль, использующий refresh команда.

Если основной ансамбль является объектом datastore ансамбля, то код обновляет объект непосредственно, когда это пишет результаты члену подансамбля в конце каждого цикла члена.

Код использует эти ключевые функции для параллельной обработки:

  • numpartitions — Количество разделов, чтобы разделить члены ансамбля в

  • partition — Разделите ансамбль

  • refresh — Обновите ансамбль рабочей области повторно собранными результатами раздела

Основанная на системе координат обработка

Когда вы задали основанную на системе координат обработку в приложении, сгенерированный код делит каждый сигнал полноправного члена на сегменты или frames. Размер и частота этих систем координат хранятся в frame policy.

Фигура иллюстрирует поток. Код выполняет цикл системы координат в каждом цикле члена. Когда вы выбираете функции генерации кода, приложение ограничивает ваши выборы признаков к одной политике системы координат. Сгенерированная функция поэтому никогда не содержит больше чем один цикл системы координат.

Во время фрагмента инициализации код добавляет только входные переменные и ID политики системы координат, такие как FRM_2, к переменным данных. Код не добавляет переменные, которые будут вычислены. Те переменные хранятся в FRM_ переменная.

Во время первой части цикла члена, кода:

  1. Читает сигнал полноправного члена.

  2. Составляет таблицу интервала системы координат, которая порождает линейную оболочку столбцов времени полного сигнала и которая содержит запуск и времена остановки для каждой системы координат, с помощью frameintervals.

  3. Инициализирует таблицу страничных блоков на уровне члена. Эта таблица в конечном счете содержит вычисленные значения переменных для всех систем координат в члене.

Вторая часть цикла члена является циклом системы координат. Для каждой системы координат, кода:

  1. Использует информацию об интервале системы координат, чтобы извлечь данные для той системы координат от полного сигнала.

  2. Вычисляет сигналы, спектры, и показывает таким же образом что касается полной обработки сигналов на уровне члена. После вычисления каждой новой переменной код добавляет переменную к таблице результатов системы координат. Рисунок показывает пример таблицы страничных блоков члена. Первые два элемента содержат запуск и время остановки интервала системы координат. Итоговый элемент содержит функции, вычисленные для той системы координат.

  3. Когда переменные расчеты завершены, код добавляет завершенную таблицу результатов системы координат к таблице страничных блоков уровня члена. Рисунок показывает пример таблицы уровня члена, которая содержит результаты системы координат для всех членов.

Итоговая операция в цикле члена должна записать завершенную таблицу страничных блоков члена члену ансамбля.

Создание таблицы функции выход является по существу тем же самым что касается основного случая, но каждая переменная члена теперь включает все сегменты.

Смотрите также

| | | | | | | | | | | |

Похожие темы