Упорядоченное по столбцам размещение к упорядоченному по строкам преобразованию размещения моделей с блоками интерполяционной таблицы

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, чтобы сгенерировать код С.

Выберите Optimized Algorithms for Row-Major Array Layout

Табличные данные с упорядоченным по строкам размещением массивов часто используются в области калибровки. Чтобы соединить интерфейсом с упорядоченными по строкам табличными данными с существующей моделью, обновите упорядоченную по столбцам модель, чтобы работать эффективно с упорядоченными по строкам табличными данными.

Используйте алгоритм, который оптимизирован для заданного размещения массивов, чтобы достигнуть лучшей производительности. Например, используйте упорядоченные по строкам алгоритмы, когда размещение Массивов будет установлено как 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);

Похожие темы