Simulink® Coder™ поддерживает упорядоченное по строкам размещение массивов для генерации кода. Можно интегрировать существующие приложения, которые используют упорядоченное по строкам размещение массивов со сгенерированным кодом в упорядоченном по строкам размещении массивов. Когда вы переключаете существующую модель с интерполяционной таблицей (LUT) блоки от упорядоченного по столбцам размещения массивов до упорядоченного по строкам размещения массивов, рекомендуется преобразовать блоки LUT от упорядоченного по столбцам алгоритма до упорядоченного по строкам алгоритма. Код, сгенерированный при помощи упорядоченного по строкам алгоритма, выполняет с лучшей скоростью и использованием памяти при работе с табличными данными с упорядоченным по строкам размещением массивов. Код, сгенерированный при помощи упорядоченного по столбцам алгоритма, выполняет лучше всего с упорядоченным по столбцам размещением массивов.
Этот пример показывает рабочий процесс преобразования модели с блоками LUT от упорядоченного по столбцам размещения до упорядоченного по строкам размещения, чтобы достигнуть лучшей эффективности на упорядоченном по строкам размещении массивов.
В этом примере, вас:
Идентифицируйте размещение массивов и выберите оптимизированный алгоритм.
Сохраните семантику посредством табличного сочетания.
Сгенерируйте код при помощи упорядоченного по строкам алгоритма и размещения массивов.
1. Откройте модель rtwdemo_row_lutcol2row_workflow
в качестве примера.
open_system('rtwdemo_row_lutcol2row_workflow');
По умолчанию Simulink конфигурирует модель, чтобы использовать упорядоченные по столбцам алгоритмы и упорядоченное по столбцам размещение массивов. Эти параметры являются параметрами конфигурации в диалоговом окне Configuration Parameters.
Математика и Типы данных> алгоритмы Использования, оптимизированные для упорядоченного по строкам размещения массивов — Этот параметр, влияют на симуляцию и генерацию кода.
Генерация кода> Интерфейс> размещение Массивов — Этот параметр влияет только на генерацию кода.
2. На вкладке Modeling нажмите, Run, чтобы симулировать модель и наблюдать выходной сигнал вошел в систему переменная yout
рабочей области.
3. Измените свою текущую папку в MATLAB® к перезаписываемой папке. На вкладке C Code нажмите Build, чтобы сгенерировать код С.
Табличные данные с упорядоченным по строкам размещением массивов часто используются в области калибровки. Чтобы соединить интерфейсом с упорядоченными по строкам табличными данными с существующей моделью, обновите упорядоченную по столбцам модель, чтобы работать эффективно с упорядоченными по строкам табличными данными.
Используйте алгоритм, который оптимизирован для заданного размещения массивов, чтобы достигнуть лучшей эффективности. Например, используйте упорядоченные по строкам алгоритмы, когда размещение Массивов будет установлено как Row-major
во время генерации кода.
1. Чтобы включить упорядоченные по строкам алгоритмы, откройте диалоговое окно Configuration Parameters. На Математике и панели Типов данных, выберите алгоритмы Использования параметра конфигурации, оптимизированные для упорядоченного по строкам размещения массивов. В качестве альтернативы в командном окне MATLAB, введите:
set_param('rtwdemo_row_lutcol2row_workflow','UseRowMajorAlgorithm','on');
2. Нажмите Run, чтобы симулировать модель. Simulink сообщает об ошибках, потому что он сталкивается с противоречивой точкой останова и табличными данными между блоками предварительного поиска и интерполяции. Причинами этой ошибки являются два семантических изменения, которые происходят, когда вы переключаетесь от упорядоченных по столбцам алгоритмов до упорядоченных по строкам алгоритмов, то есть, когда вы:
Выберите плоскость из 3-D таблицы в блоке интерполяции.
Выберите плоскость от 4-D таблицы до прямого блока интерполяционной таблицы.
1. Для подтабличного выбора перед интерполяцией или прямым поиском, который выводит векторную или 2D матрицу, изменение семантики модели, когда вы переключаетесь от упорядоченного по столбцам алгоритма до упорядоченного по строкам алгоритма путем выбора алгоритмов Использования параметра конфигурации, оптимизированных для упорядоченного по строкам размещения массивов. Чтобы сохранить семантику и зафиксировать предыдущие ошибки, переставьте табличные данные при помощи этих команд:
T4d_str = get_param('rtwdemo_row_lutcol2row_workflow/Direct LUT','Table'); set_param('rtwdemo_row_lutcol2row_workflow/Direct LUT','Table',... ['permute(',T4d_str,',[3,4,1,2])']);
T3d_str = get_param('rtwdemo_row_lutcol2row_workflow/Interp2','Table'); set_param('rtwdemo_row_lutcol2row_workflow/Interp2','Table',... ['permute(',T3d_str,',[3,1,2])']);
2. Перед вами данные о таблице импорта из файла необходимо переставить табличные данные в файле. Это сочетание сохраняет таблицу настраиваемой в рабочем процессе генерации кода и симуляции.
После перестановки табличных данных Simulink конфигурирует модель rtwdemo_row_lutcol2row_workflow
для упорядоченной по строкам симуляции. Модель эквивалентна предварительно сконфигурированной модели rtwdemo_row_lutcol2row_workflow_rowrow
это переставило табличные данные и использует упорядоченный по строкам алгоритм.
1. Откройте модель rtwdemo_row_lutcol2row_workflow_rowrow
в качестве примера.
open_system('rtwdemo_row_lutcol2row_workflow_rowrow');
2. Чтобы настроить эти модели для упорядоченной по строкам генерации кода, откройте диалоговое окно Configuration Parameters. В дополнение к включению алгоритмов Использования, оптимизированных для упорядоченного по строкам параметра конфигурации размещения массивов, на Генерации кода> Интерфейсная панель, устанавливает Размещение параметра конфигурации Массивов на Row-Major
опция. Параметр Размещения Массивов включает модель для упорядоченной по строкам генерации кода. В качестве альтернативы в командном окне MATLAB, введите:
% For model 'rtwdemo_row_lutcol2row_workflow_rowrow' set_param('rtwdemo_row_lutcol2row_workflow_rowrow', 'ArrayLayout','Row-major'); % For model 'rtwdemo_row_lutcol2row_workflow' set_param('rtwdemo_row_lutcol2row_workflow', 'ArrayLayout','Row-major');
3. В диалоговых окнах блока исследуйте переставленную 3-D таблицу.
4. Измените свою текущую папку в MATLAB к перезаписываемой папке. На вкладке C Code нажмите Build, чтобы сгенерировать код С. В сгенерированном коде наблюдайте табличные данные с упорядоченным по строкам размещением массивов
В сгенерированном коде, memcpy
функционируйте заменяет for
циклы. Используя memcpy
уменьшает объем памяти для того, чтобы хранить данные. Эта оптимизация улучшает скорость выполнения.
Наблюдайте алгоритмы, оптимизированные для упорядоченных по строкам данных.
close_system('rtwdemo_row_lutcol2row_workflow',0); close_system('rtwdemo_row_lutcol2row_workflow_rowrow',0);