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

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

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

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

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

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

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

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

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

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

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

Рисунок разбивает поток кода на три основных раздела: Initialize, Loop through Members и Create Outputs.

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

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

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

Исходные данные

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

Представитель Расчета Цикла

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

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

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

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

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

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

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

  • read - Прочитайте следующего представителя ансамбля

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

  • writeToLastMemberRead - Запись данных в представитель ансамбля

  • table - массив Ensemble, содержащий переменные и функции в именованных столбцах и представители в строках

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

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

  • array2timetable - Преобразовать массив в timetable

Выходы

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

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

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

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

Если ваша функция основана на исходном импорте объекта ensemble 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 переменная.

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

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

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

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

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

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

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

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

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

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

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

  • numpartitions - Количество перегородок для разделения представителей ансамбля на

  • partition - Разделение ансамбля

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

Обработка на основе фрейма

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

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

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

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

  1. Считывает сигнал полного представителя.

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

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

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

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

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

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

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

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

См. также

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

Похожие темы