exponenta event banner

Алгоритм интерполяции для компоновки главного массива строк

В этом примере показан алгоритм интерполяции в таблице 2-D и 3-D Lookup Table, оптимизированный для макета главного массива строк. Алгоритм интерполяции, оптимизированный для компоновки основного массива столбца, также представлен в качестве ссылки. Код, генерируемый с помощью алгоритма интерполяции основной строки, работает с наилучшей скоростью и использованием памяти при работе с данными таблицы с макетом основной строки. Код, генерируемый с помощью алгоритма интерполяции «основной столбец», лучше всего работает с компоновкой «основной столбец».

В этом примере выполняется следующее:

  • Интерполяция в таблице поиска 2-D с помощью алгоритма «основной столбец» и «основная строка».

  • Создание кода с основным алгоритмом строки и макетом массива.

  • Определите макет массива и выберите оптимизированный алгоритм.

  • Интерполяция в таблице поиска 3-D с помощью алгоритма «основной столбец» и «основная строка».

Моделируйте с 2-м главным рядом алгоритмом

1. Открыть пример модели rtwdemo_row_lut2d.

model = 'rtwdemo_row_lut2d';
open_system(model);

2. По умолчанию Simulink настраивает модель с алгоритмом «основной столбец» и компоновкой массива «основной столбец». Модель rtwdemo_row_lut2d сконфигурирован для использования алгоритма «столбец-мажор». Моделирование модели. Для просмотра выходных данных откройте Инспектор данных (Data Inspector) на вкладке Моделирование (Simulation). Выходное значение равно 4.

3. Чтобы включить основные алгоритмы строк, откройте диалоговое окно Параметры конфигурации (Configuration Parameters). На панели Математика (Math) и Типы данных (Data Types) включите параметр конфигурации Использовать алгоритмы, оптимизированные для компоновки основного массива строк. Либо в окне команды MATLAB введите:

set_param(model,'UseRowMajorAlgorithm','on');

4. Смоделировать модель и наблюдать за результатами в инспекторе данных. Выходное значение равно 4.

Алгоритмы «основной столбец» и «основная строка» различаются только в порядке интерполяции. В некоторых случаях из-за различной последовательности операций в одном и том же наборе данных могут возникнуть незначительные числовые различия в выходах алгоритмов «столбец-большая» и «строка-большая». Для таблицы 2-D Lookup, используемой в примерной модели, алгоритм интерполяции показан здесь.

Создание кода с помощью алгоритма основной строки и компоновки массива

Данные таблицы 2-D, используемые в модели rtwdemo_row_lut2d является:

Table_3by2.Value
ans =

     1     4
     2     5
     3     6

1. Откройте диалоговое окно «Параметры конфигурации». В дополнение к включению параметра конфигурации Use algoriths optimized for row-major array layout, на панели Code Generation > Interface установите для параметра конфигурации Array layout значение Row-Major вариант. Этот параметр конфигурации активизирует модель для генерации кода основной строки. Либо в окне команды MATLAB введите:

set_param(model, 'ArrayLayout','Row-major');

2. Измените текущую папку в MATLAB ® на папку с возможностью записи. На вкладке Код C (C Code) щелкните Создать (Build), чтобы создать код C.

3. В созданном коде просмотрите данные таблицы с макетом основной строки массива. Для сравнения, вот данные таблицы в сгенерированном коде для макета основного массива столбца.

В сгенерированном коде данные таблицы находятся в основном порядке строк, а алгоритм интерполяции оптимизирован для компоновки основного массива строк. Алгоритм основной строки работает с данными таблицы, которые являются смежными в памяти. Это приводит к более быстрому доступу к кэшу, что делает эти алгоритмы удобными для кэша.

Эта таблица суммирует взаимосвязь между компоновкой массива и алгоритмами, удобными для кэширования. Для достижения высокой производительности рекомендуется использовать алгоритм, оптимизированный для указанной компоновки массива. Например, используйте алгоритм интерполяции основной строки, если для компоновки массива установлено значение Row-Major для генерации кода.

Интерполяция в таблице 3-D

1. Открыть пример модели rtwdemo_row_interpalg.

open_system('rtwdemo_row_interpalg');

2. Создайте код для модели с помощью предыдущей процедуры. Моделирование и генерация кода из модели путем повторения шагов, выполняемых в rtwdemo_row_lut2d модель.

Интерполяция «строка-большая» и «столбец-большая» в таблице 3-D, используемой в примерной модели, проиллюстрирована здесь.

close_system('rtwdemo_row_lut2d',0);
close_system('rtwdemo_row_interpalg', 0);

Связанные темы