Ускорите симуляцию, ускоряя фазу инициализации, используя эти методы.
Сложная графика и большие изображения долго загружаются и визуализируются. Маскированные блоки, которые содержат такие изображения, могут сделать вашу модель менее отзывчивой. По возможности удалите сложные чертежи и изображения из маскированных блоков.
Если вы хотите сохранить изображение, замените его на уменьшенную версию с низким разрешением. Используйте редактор маски и редактируйте команды чертежа значка, чтобы сохранить изображение, загруженное вызовом, в image()
.
Дополнительные сведения о редакторе масок см. в разделе «Обзор редактора масок».
Когда вы открываете или обновляете модель, Simulink® запускает код инициализации маски. Если ваша модель содержит сложные команды инициализации маски, которые содержат много вызовов set_param
консолидировать последовательные вызовы в один вызов с несколькими парами аргументов. Консолидация вызовов может уменьшить накладные расходы, связанные с этими вызовами функций.
Дополнительные сведения см. в разделе «Код коллбэка маски».
Если вы используете MATLAB® скрипты для загрузки и инициализации данных, можно улучшить эффективность, загрузив вместо этого MAT-файлы. Данные в MAT-файле находятся в двоичном формате и могут быть более трудными для работы, чем скрипт. Однако операция загрузки обычно инициализирует данные быстрее, чем эквивалентный скрипт MATLAB.
Для получения дополнительной информации смотрите MAT-файлы для данных о сигнале.
В целом, чем больше интерактивной модели, тем больше времени требуется для симуляции. Используйте эти методы, чтобы уменьшить интерактивность вашей модели.
Некоторые включенные диагностические функции могут значительно замедлить симуляции. Рассмотрите их отключение в панели параметров конфигурации модели Diagnostics.
Примечание
Выполнение Array bounds exceeded и Solver data inconsistency может замедлить эффективность во время выполнения модели. Для получения дополнительной информации см. «Ограничения массивов превышены» и «Несогласованность данных решателя».
После проверки правильности работы кода MATLAB отключите эти проверки в области параметров конфигурации модели Simulation Target.
Enable debugging/animation
Detect wrap on overflow (with debugging)
Echo expressions without semicolons
Для получения дополнительной информации смотрите Параметры конфигурации модели: Цель симуляции.
Если ваша симуляция включает низкоуровневые операции матрицы MATLAB, используйте библиотеки Базовых подпрограмм линейной алгебры (BLAS), чтобы использовать высоко оптимизированные внешние линейные стандартные программы алгебры.
По умолчанию Stateflow® графики подсвечивают текущие активные состояния в модели и анимируют изменения состояния, которые происходят при моделировании модели. Эта функция полезна для отладки, но замедляет симуляцию.
Чтобы ускорить симуляции, закройте все диаграммы Stateflow или отключите анимацию. Точно так же рассмотрите отключение анимации или уменьшение точности сцены, когда вы используете:
Simulink 3D Animation™
Simscape™ Multibody™ визуализация
FlightGear
Любой другой 3D пакет анимации
Дополнительные сведения см. в разделе Симуляция ускорения (Stateflow).
Если ваша модель содержит средство просмотра возможностей, которое отображает высокую частоту логгирования, и вы не можете удалить возможности, измените свойства Viewer, чтобы сравнить точность для скорости визуализации.
Однако, когда вы используете десятикратное уменьшение, чтобы уменьшить количество нанесенных точек данных, можно пропустить короткие переходные процессы и другие явления, которые можно увидеть с большим количеством точек данных. Чтобы иметь более точный контроль над разрешением визуализации, поместите средства просмотра в включенные подсистемы.
Для получения дополнительной информации см. раздел Scope Viewer.
Используйте эти методы для улучшения эффективности симуляции путем упрощения модели, не жертвуя точностью.
Замените сложную подсистему одной из следующих альтернатив:
Линейная или нелинейная динамическая модель, которая была создана из измеренных входно-выходных данных с использованием System Identification Toolbox™.
Высокоточная нелинейная статистическая модель, которая была создана с использованием основанной на модели Toolbox™ калибровки.
Линейная модель, которая была создана с использованием Simulink Control Design™.
Интерполяционная таблица. Дополнительные сведения см. в разделе Интерполяционная таблица.
Можно вести оба представления подсистемы в библиотеке и использовать альтернативные подсистемы для управления ими. В зависимости от модели можно сделать эту замену, не влияя на общий результат. Для получения дополнительной информации смотрите Оптимизировать сгенерированный код для блоков интерполяционной таблицы.
Когда вы сокращаете количество блоков в модели, меньше блоков требуют обновлений во время симуляции, и симуляция происходит быстрее.
Векторизация является одним из способов уменьшить количество блоков. Например, если у вас есть несколько параллельных сигналов, которые проходят подобный набор расчетов, попробуйте объединить их в вектор с помощью блока Mux и выполните один расчет.
Можно также включить параметр Block Reduction в диалоговом окне Configuration Parameters.
При обработке на основе кадров Simulink обрабатывает выборки пакетами вместо одного за раз. Если модель включает аналого-цифровой преобразователь, например, можно собрать выходные выборки в буфере. Обработайте буфер в одной операции, такой как быстрое преобразование Фурье. Обработка данных в фрагментах таким образом уменьшает количество раз, которое симуляция должна вызывать блоки в вашей модели.
В целом накладные расходы на планирование уменьшаются с увеличением формата кадра. Однако большие системы координат потребляют больше памяти, и ограничения памяти могут негативно повлиять на эффективность сложных моделей. Экспериментируйте с различными форматами кадра, чтобы найти такой, который максимизирует преимущества эффективности обработки на основе фрейма, не вызывая проблем с памятью.
Simulink предоставляет комплексную библиотеку решателей, включая решатели с фиксированным шагом и с переменным шагом, для обработки жестких и нежестких систем. Каждый решатель определяет время следующего шага симуляции. Решатель применяет численный метод, чтобы решить обыкновенные дифференциальные уравнения, которые представляют модель.
Выбранный решатель и выбранные опции решателя могут повлиять на скорость симуляции. Выберите и сконфигурируйте решатель, который поможет повысить эффективность вашей модели с помощью этих критериев. Для получения дополнительной информации см. раздел Выбор решателя.
Жесткая система имеет непрерывную динамику, которая изменяется медленно и быстро. Неявные решатели особенно полезны для жестких задач. Явные решатели лучше подходят для нежестких систем. Использование явного решателя для решения жесткой системы может привести к неправильным результатам. Если нежесткий решатель использует размер очень небольшого шага, чтобы решить модель, это признак того, что ваша система жесткая.
Когда вы решаете между использованием решателя с переменной или с фиксированным шагом, имейте в виду размер шага и динамику вашей модели. Выберите решатель, который использует временные шаги, чтобы захватить только важную для вас динамику. Выберите решатель, который выполняет только вычисления, необходимые для отработки следующего временного шага.
Вы используете решатели с фиксированным шагом, когда размер шага меньше или равен основному шагу расчета модели. С помощью решателя с переменным шагом размер шага может варьироваться, потому что решатели с переменным шагом динамически корректируют размер шага. В результате размер шага для некоторых временных шагов больше, чем основной шаг расчета, что уменьшает количество шагов, необходимых для завершения симуляции. В целом симуляции с решателями с переменным шагом выполняются быстрее, чем те, которые запускаются с решателями с фиксированным шагом.
Выберите решатель с фиксированным шагом, когда основной шаг расчета вашей модели равен одной из частот дискретизации. Выберите решатель с переменным шагом, когда фундаментальный шаг расчета вашей модели меньше, чем самая быстрая частота дискретизации. Можно также использовать решатели с переменным шагом для захвата непрерывной динамики.
Когда вы уменьшаете порядок решателя, вы уменьшаете количество вычислений, которые Simulink выполняет, чтобы определить выходы состояния, что улучшает скорость симуляции. Однако результаты становятся менее точными, когда порядок решателя уменьшается. Выберите самый низкий порядок решателя, который производит результаты с приемлемой точностью.
Увеличение размера шага решателя или допуска ошибки обычно увеличивает скорость симуляции за счет точности. Внесите эти изменения с осторожностью, потому что они могут заставить Simulink пропустить потенциально важную динамику во время симуляции.
Решатели с переменным шагом динамически регулируют размер шага, увеличивая его, когда переменная изменяется медленно, и уменьшая, когда переменная изменяется быстро. Это поведение заставляет решатель делать много небольших шагов около разрыва, потому что это когда переменная изменяется быстро. Точность улучшается, но часто за счет длительных времен симуляции.
Чтобы избежать небольших временных шагов и длительных симуляций, связанных с этими ситуациями, Simulink использует обнаружение пересечения нулем, чтобы точно определить местоположение таких разрывов. Для систем, которые показывают частые колебания между режимами работы - явление, известное как трепетание - это обнаружение пересечения нулем может иметь противоположный эффект и, таким образом, замедлить симуляции. В этих ситуациях можно отключить обнаружение пересечения нулем для улучшения эффективности.
Вы можете включить или отключить обнаружение пересечения нулем для определенных блоков в модели. Чтобы улучшить эффективность, рассмотрите отключение обнаружения пересечения нулем для блоков, которые не влияют на точность симуляции.
Для получения дополнительной информации смотрите Обнаружение пересечения нулем.
В классическом рабочем процессе модель Simulink неоднократно моделирует различные входы, граничные условия и рабочие условия. Во многих ситуациях эти симуляции имеют общую фазу запуска, в которой модель переходит от начального состояния к другому состоянию. Например, можно поднять электродвигатель до скорости, прежде чем тестировать различные последовательности управления.
Использование SimState
можно сохранить состояние моделирования в конце фазы запуска, а затем восстановить его для использования в качестве начального состояния для будущих симуляций. Этот метод не улучшает скорость симуляции, но может уменьшить общее время симуляции для последовательных запусков, потому что фаза запуска должна быть моделирована только один раз.
Для получения дополнительной информации см. раздел «Сохранение и восстановление рабочей точки симуляции».