Справочная информация:
Я унаследовал модель MATLAB для имитации дискретных событий и хочу автоматизировать и ускорить ее выполнение. Вместо того, чтобы вызывать sim (modelName) и запускать интерпретируемый код в MATLAB, я хотел бы найти решение, похожее на вызывающую систему ('modelName.exe ...'). Моя мотивация для этого исходит от первоначальных испытаний, которые показывают, что скорость увеличивается почти на 1000%. Мне удалось использовать мастерскую в реальном времени с целью Rapid Simulation для создания исполняемого файла со статическим распределением памяти. Проблема заключается в том, что в модели имеются встроенные функциональные блоки MATLAB, параметры которых будут меняться по размеру и форме при каждом запуске. И будет сотни, если не тысячи трасс.
Согласно документации MathWorks:
Динамическое распределение памяти не поддерживается для встроенных функциональных блоков MATLAB:
"Нельзя использовать динамическое выделение памяти для данных переменного размера во встроенных функциональных блоках MATLAB. Используйте ограниченные данные вместо неограниченных данных переменного размера."
Вопрос:
Каков потенциальный способ обойти это ограничение?
Мысли:
- Используйте статические переменные размеров, которые являются достаточно большими, и дополнительно передайте переменные int / настраиваемые параметры, чтобы явным образом отобразить часть данных, в которую нужно перейти.
- S-функции?
- То, что я реализую сегодня: программно перекомпилировать симуляцию каждый раз, когда она вызывается для динамического генерирования статического кода.
- Портируйте все на настоящий / современный язык программирования, такой как python или c ++.
Ключевые слова:
Встроенное динамическое распределение памяти в MATLAB Семинар по дискретным событиям в реальном времени Simulink SimEvents Перестраиваемые параметры