Ускорьте симуляцию путем ускорения фазы инициализации, использования этих методов.
Объедините графику, и большие изображения занимают много времени, чтобы загрузить и представить. Маскированные блоки, которые содержат такие изображения, могут сделать вашу модель менее быстро реагирующей. Где возможно, удалите комплексные рисунки и изображения от маскированных блоков.
Если вы хотите сохранить изображение, замените его на меньшую, версию с низкой разрешающей способностью. Используйте редактор маски и отредактируйте команды рисования значка, чтобы сохранить изображение, которое загружается вызовом 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, пользуйтесь библиотеками Basic Linear Algebra Subprograms (BLAS), чтобы использовать высоко оптимизированные внешние стандартные программы линейной алгебры.
По умолчанию графики Stateflow® подсвечивают текущие активные состояния в модели и анимируют изменения состояния, которые происходят, когда модель симулирует. Эта функция полезна для отладки, но это замедляет симуляцию.
Чтобы ускорить симуляции, или закройте все диаграммы Stateflow или отключите анимацию. Точно так же рассмотрите анимацию отключения или сокращение точности сцены, когда вы будете использовать:
Simulink 3D Animation™
Визуализация Simscape™ Multibody™
FlightGear
Любой другой 3D пакет анимации
Чтобы узнать больше, смотрите, Ускоряют Симуляцию (Stateflow).
Если ваша модель содержит средство просмотра осциллографа, которое отображает высокий показатель логгирования, и вы не можете удалить осциллограф, настроить свойства средства просмотра обменять точность на рендеринг скорости.
Однако, когда вы используете децимацию, чтобы сократить количество нанесенных на график точек данных, можно скучать по коротким переходным процессам и другим явлениям, которые вы видите с большим количеством точек данных. Чтобы иметь более точный контроль над включением визуализации, поместите средства просмотра в активированные подсистемы.
Для получения дополнительной информации смотрите Scope Viewer.
Используйте эти методы, чтобы улучшать производительность симуляции путем упрощения модели, не жертвуя точностью.
Замените комплексную подсистему на одну из этих альтернатив:
Линейная или нелинейная динамическая модель, которая была создана из измеренных данных ввода - вывода с помощью System Identification Toolbox™.
Высокочастотная, нелинейная статистическая модель, которая была создана с помощью Model-Based Calibration Toolbox™.
Линейная модель, которая была создана с помощью Simulink Control Design™.
Интерполяционная таблица. Для получения дополнительной информации смотрите интерполяционную таблицу.
Можно обеспечить оба представления подсистемы в библиотеке и использовать различные подсистемы, чтобы управлять ими. В зависимости от модели можно сделать эту замену, не влияя на полный результат. Для получения дополнительной информации смотрите, Оптимизируют Сгенерированный код для Блоков Интерполяционной таблицы.
Когда вы сокращаете количество блоков в вашей модели, меньше блоков требует обновлений во время симуляций, и симуляция быстрее.
Векторизация является одним способом уменьшать ваше количество блока. Например, если у вас есть несколько параллельных сигналов, которые подвергаются подобному набору расчетов, пытаются объединить их в вектор с помощью блока Mux и выполнить один расчет.
Можно также включить параметр Block Reduction в диалоговом окне Configuration Parameters.
В основанной на системе координат обработке, выборках процессов Simulink в пакетах вместо по одному. Если модель включает аналого-цифровой конвертер, например, можно собрать выходные выборки в буфере. Обработайте буфер в одной операции, такой как быстрое преобразование Фурье. Обработка данных во фрагментах, этот путь уменьшает число раз, что симуляция должна вызвать блоки в модели.
В общем случае планирование наверху уменьшается, когда формат кадра увеличивается. Однако большие системы координат используют больше памяти, и ограничения памяти могут оказать негативное влияние на производительность сложных моделей. Экспериментируйте с различными форматами кадра, чтобы найти тот, который максимизирует выигрыш в производительности основанной на системе координат обработки, не вызывая проблемы памяти.
Simulink обеспечивает всестороннюю библиотеку решателей, включая фиксированный шаг и решатели переменного шага, чтобы обработать жесткие и нежесткие системы. Каждый решатель определяет время следующего шага симуляции. Решатель применяет численный метод решить обыкновенные дифференциальные уравнения, которые представляют модель.
Решатель, который вы выбираете и опции решателя, которые вы выбираете, может влиять на скорость симуляции. Выберите и сконфигурируйте решатель, который помогает повысить производительность вашей модели с помощью этих критериев. Для получения дополнительной информации смотрите, Выбирают Solver.
Жесткая система имеет непрерывные движущие силы, которые варьируются медленно и быстро. Неявные решатели особенно полезны для жестких проблем. Явные решатели лучше подходят для нежестких систем. Используя явный решатель, чтобы решить жесткую систему может привести к неправильным результатам. Если нежесткий решатель использует размер очень небольшого шага, чтобы решить модель, это - знак, что ваша система жестка.
Когда вы решаете между использованием переменного шага или решателя фиксированного шага, имеете в виду размер шага и динамику вашей модели. Выберите решатель, который использует временные шаги, чтобы получить только движущие силы, которые важны для вас. Выберите решатель, который выполняет только вычисления, должен был разработать следующий временной шаг.
Вы используете решатели фиксированного шага, когда размер шага меньше чем или равен основному шагу расчета модели. С решателем переменного шага может варьироваться размер шага, потому что решатели переменного шага динамически настраивают размер шага. В результате размер шага в течение некоторого времени продвигается, больше, чем основной шаг расчета, сокращая количество шагов, требуемых завершать симуляцию. В общем случае симуляции с решателями переменного шага запускаются быстрее, чем те, которые запускаются с решателями фиксированного шага.
Выберите решатель фиксированного шага, когда основной шаг расчета вашей модели будет равен одной из частот дискретизации. Выберите решатель переменного шага, когда основной шаг расчета вашей модели будет меньше самой быстрой частоты дискретизации. Можно также использовать решатели переменного шага, чтобы получить непрерывную динамику.
Когда вы уменьшаете порядок решателя, вы сокращаете количество вычислений, которые Simulink выполняет, чтобы определить выходные параметры состояния, который улучшает скорость симуляции. Однако результаты становятся менее точными, когда порядок решателя уменьшается. Выберите самый низкий порядок решателя, который приводит к результатам с приемлемой точностью.
Увеличение допуска размера или ошибки шага решателя обычно увеличивает скорость симуляции за счет точности. Внесите эти изменения с осторожностью, потому что они могут заставить Simulink пропускать потенциально важную динамику во время симуляций.
Решатели переменного шага динамически настраивают размер шага, увеличивая его, когда переменная изменяется медленно и уменьшение его, когда переменная изменяется быстро. Это поведение заставляет решатель делать много небольших шагов около разрыва, потому что это - когда переменная изменяется быстро. Точность улучшается, но часто за счет длинных времен симуляции.
Чтобы избежать маленьких временных шагов и долгих симуляций, сопоставленных с этими ситуациями, Simulink использует обнаружение пересечения нулем, чтобы определить местоположение таких разрывов точно. Для систем, которые показывают частые колебания между режимами работы — явлением, известным болтающий — это обнаружение пересечения нулем может оказать противоположное влияние и таким образом замедлить симуляции. В этих ситуациях можно отключить обнаружение пересечения нулем, чтобы улучшать производительность.
Можно включить или отключить обнаружение пересечения нулем для определенных блоков в модели. Чтобы улучшать производительность, рассмотрите обнаружение пересечения нулем отключения для блоков, которые не влияют на точность симуляции.
Для получения дополнительной информации смотрите Обнаружение Пересечения нулем.
В классическом рабочем процессе модель Simulink неоднократно симулирует для различных входных параметров, граничных условий и условий работы. Во многих ситуациях эти симуляции совместно используют общую фазу запуска в который переходы модели от начального состояния до другого состояния. Например, можно принести электродвигателю до скорости, прежде чем вы протестируете различные управляющие последовательности.
Используя SimState
, можно сохранить состояние симуляции в конце фазы запуска и затем восстановить его для использования в качестве начального состояния для будущих симуляций. Этот метод не улучшает скорость симуляции, но это может уменьшать общее время симуляции для последовательных запусков, потому что фаза запуска должна быть симулирована только однажды.
Смотрите Сохраняют и Рабочая точка Симуляции Восстановления для получения дополнительной информации.