По умолчанию сгенерированный код содержит одномерные массивы для многомерных данных модели. В диалоговом окне Configuration Parameters, если вы устанавливаете Array layout (Simulink Coder) параметр к Row-major
, можно сохранить размерности многомерных массивов в сгенерированном коде. Сохранение измерений массива в сгенерированном коде улучшает интеграцию с внешним кодом.
MATLAB® и C организуют многомерные данные по-разному. Для получения дополнительной информации смотрите Сохранение Размерности Многомерных массивов.
В сгенерированном коде можно сохранить размерности импорта корневого уровня и выходных портов, параметров, сигналов, состояний, интерполяционных таблиц и хранилищ данных.
Во вкладке Code Mappings> Data Defaults можно сконфигурировать эти категории элементов данных модели. Вы задаете класс памяти, чтобы сохранить размерности.
Inports
Outports
Model parameters
External parameter objects
Shared local data stores
Global data stores
Internal data
Затем когда вы устанавливаете Storage class на Auto
или Model default
на отдельных элементах данных модели, по умолчанию, генератор кода применяет настройку, которую вы настраиваете для соответствующих элементов данных модели.
Рабочий процесс в качестве примера, который применим ко всем предыдущим категориям элемента данных модели:
Откройте модель rtwdemo_preservedimensions
.
В диалоговом окне Configuration Parameters проверьте, что параметр Array layout устанавливается на Row-major
.
От панели инструментов Simulink, на вкладке Apps, выбирают приложение Embedded Coder.
Во вкладке C Code откройте редактор Отображений Кода.
В редакторе Отображений Кода выберите вкладку Data Defaults.
Выберите категорию Inports. Заданным Storage Class является ExportToFile
. В Property Inspector, в разделе Code, выбирают свойство PreserveDimensions.
Можно создать новый класс памяти в Embedded Coder®, и затем указать что класс, чтобы сохранить размерности. Для получения дополнительной информации смотрите Размерности Заповедника для Новых Классов памяти.
Для списка поддерживаемых классов памяти смотрите Классы памяти, Поддержанные, чтобы Сохранить Размерности.
Сгенерируйте код. Сгенерированный код сохраняет размерности всего корневого уровня Inports.
real_T rtPressure[2][3]; real_T rtTargetVolume[2][3]; real_T rtTemperature[2][3];
Можно заменить настройки по умолчанию, заданные в редакторе Отображений Кода путем конфигурирования отдельных источников элемента данных модели в Model Data Editor. Вот рабочий процесс в качестве примера, который применим ко всем категориям элемента данных модели.
Во вкладке Modeling кликните по вкладке Model Data Editor.
В Model Data Editor нажмите кнопку Show/refresh additional information.
В Model Data Editor выберите вкладку Inports/Outports.
Установите Change view на Code
.
В подсистеме Volume Controller
, выберите Volume difference
сигнала и набор Storage Class к
ExportToFile
или любой другой поддерживаемый класс памяти. Для получения дополнительной информации смотрите Классы памяти, Поддержанные, чтобы Сохранить Размерности.
При хранении строки в особом внимании откройте Property Inspector. В разделе Code выберите свойство Preserve array dimensions.
Сгенерируйте код. Сгенерированный код сохраняет размерности сигнала.
real_T Volumedifference[2][3];
Можно сохранить размерности в сгенерированном коде для этих классов памяти:
Const
Volatile
ConstVolatile
ExportToFile
ImportFromFile
FileScope
(не поддерживаемый для хранилища Глобальных данных)
Localizable
Чтобы сохранить размерности, когда вы проектируете свой собственный класс памяти в Словаре Embedded Coder, выбирают опцию Preserve array dimensions в Property Inspector. Выбор этого свойства сохраняет размерности для всех экземпляров вашего класса памяти. Чтобы использовать класс памяти, в редакторе Отображений Кода, конфигурируют категории элемента модели путем определения Storage Class к новому классу памяти, который вы создали.
Чтобы сохранить размерности, когда вы спроектируете свой собственный класс памяти в Custom Storage Class Designer, используйте свойство Preserve array dimensions. Preserve array dimensions имеет эти опции:
No
(значение по умолчанию) — Сглаживает многомерный массив к одной размерности в сгенерированном коде.
Yes
— Измерения массива консервов для параметров заданного пользовательского класса памяти.
Instance Specific
— Если вы хотите сохранить измерения массива для каждого экземпляра пользовательского класса памяти, включите свойство Preserve array dimensions на объекте параметра. Для пакета Simulink этой установкой свойства является Instance Specific
по умолчанию.
Генератор кода сглаживает многомерные массивы в шинах Simulink® в сгенерированном коде.
Вы не можете сохранить измерения массива для объектов параметра MPT.
Генератор кода не сохраняет размерности для объектов сигнала, когда вы применяете пользовательский пакет к объекту сигнала и переименовываете класс памяти, который поддерживает сохранение размерности.
Генератор кода не сохраняет размерности для параметров без объектов данных.