файле model.rtw
Некоторым записям в файле
, таким как те, которые соответствуют параметрам и постоянному блоку I/O, можно было встроить чрезвычайно большие векторы значения данных в них. Такой вектор может вызвать значительную память наверху во время генерации кода, потому что значения должны сохраняться как текст в памяти во время этого процесса. model.rtw
Чтобы избежать таких издержек, по умолчанию программное обеспечение Simulink® не выписывает целый вектор значения данных в
. Вместо этого это пишет, что ключ вызвал data reference, который может использоваться во время генерации кода, чтобы получить доступ к данным непосредственно из Simulink. Если данные не видоизменены во время генерации кода, они эффективно передаются потоком к диску, когда фактический код, содержащий значения данных, выписан.model.rtw
Ссылка на данные имеет формат
, где SLData(index)
является числовым значением, которое говорит Simulink, на какие данные ссылаются. Директивы TLC, такие как ссылки на данные хранилища index
GENERATE_FORMATTED_VALUE
в нерасширенном формате в памяти. Когда сгенерированный код выписан к диску, значения данных расширяются до фактических значений.
По умолчанию Simulink пишет ссылку на данные в
вместо вектора данных, длина которого равняется 10 или больше. Чтобы изменить максимальную длину вектора, который может появиться буквально в файле, используйте:model.rtw
set_param(0, 'RTWDataReferencesMinSize', maxlen)
Simulink заменяет вектор в качестве длинного или более длинного, чем maxlen
со ссылкой на данные, когда это создает
. Задайте model.rtw
maxlen
как целое число или как inf
. Определение inf
отключает ссылки на данные. Полный набор значений каждого вектора, однако долго, затем появляется буквально в
и занимает текстовую память во время генерации кода.model.rtw
Установка явного
влияет только на текущий сеанс MATLAB®. Чтобы установить значение через сеансы, включайте команду maxlen
set_param
в свой файл startup.m
или автоматизируйте выполнение команды, когда MATLAB запустится.
Можно явным образом расширить ссылку на данные при помощи встроенной функции GENERATE_FORMATTED_VALUE
с дополнительным третьим аргументом expand
. Команды, такие как FEVAL
могут заставить ссылку на данные быть расширенной до полной формы.
Или выключение ссылок на данные полностью или расширение избранных параметров в TLC могут вызвать значительную текстовую память наверху во время процесса генерации кода. Во время наиболее распространенных задач генерации кода является ненужным иметь расширенный вектор данных в памяти и заплатить цену дополнительных издержек. Избегайте расширенных векторов данных, если никакая альтернатива не существует.
Файл
, который содержит ссылки на данные, не может использоваться в изоляции, чтобы перезапустить процесс генерации пользовательского кода. Ссылки на данные в нем становятся устаревшими, если процесс генерации кода завершается. Попытка запустить процесс генерации кода с помощью только этот файл может привести к непредсказуемому поведению и отказам сегментации памяти.model.rtw