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