Этот пример иллюстрирует алгоритм интерполяции в 2-D и Интерполяционной таблице 3-D которая оптимизирована для размещения массива с основной строкой. Алгоритм интерполяции, который оптимизирован для размещения массива основной колонки, также представлен как ссылка. Код, сгенерированный использованием алгоритма интерполяции больших строк, выполняет с лучшей скоростью и использованием памяти при работе с данными таблицы с размещением массива больших строк. Код, сгенерированный использованием алгоритма интерполяции больших столбцов, лучше всего работает с размещением массива больших столбцов.
В этом примере вы:
Интерполяция на двумерную интерполяционную таблицу с алгоритмом основного столбца и основной строки.
Сгенерируйте код с алгоритмом основной строки и размещением массива.
Идентифицируйте размещение массива и выберите оптимизированный алгоритм.
Интерполяция в интерполяционную таблицу 3-D с алгоритмом основного столбца и основной строки.
1. Откройте пример модели rtwdemo_row_lut2d
.
model = 'rtwdemo_row_lut2d';
open_system(model);
2. По умолчанию Simulink конфигурирует модель с алгоритмом основного столбца и размещением массива основного столбца. Модель rtwdemo_row_lut2d
сконфигурировано для использования алгоритма основного столбца. Симулируйте модель. Чтобы наблюдать выход, откройте Data Inspector на вкладке Simulation. Выходное значение - 4.
3. Чтобы включить алгоритмы основной строки, откройте диалоговое окно Параметров конфигурации. На панели Математические и типы данных включите параметр конфигурации Использовать алгоритмы, оптимизированные для размещения массива с основной строкой. Кроме того, в Командном Окне MATLAB введите:
set_param(model,'UseRowMajorAlgorithm','on');
4. Симулируйте модель и наблюдайте эти результаты в Data Inspector. Выходное значение - 4.
Алгоритмы основной и основной строки различаются только в порядке интерполяции. В некоторых случаях из-за различного порядка операции на том же наборе данных вы можете испытывать незначительные числовые различия в выходах алгоритмов column-major и row-major. Для двумерных интерполяционных таблиц, используемых в модели примера, алгоритм интерполяции проиллюстрирован здесь.
Данные 2-D таблицы, используемые в rtwdemo_row_lut2d
модели является:
Table_3by2.Value
ans = 1 4 2 5 3 6
1. Откройте диалоговое окно Параметры конфигурации. В дополнение к включению алгоритмов Use, оптимизированных для параметра конфигурации размещения массива с основной строкой, на панели Генерация Кода > Interface установите размещение параметра конфигурации Array Row-Major опция. Этот параметр конфигурации включает модель для генерации кода основной строки. Кроме того, в Командном Окне MATLAB введите:
set_param(model, 'ArrayLayout','Row-major');
2. Измените текущую папку в MATLAB ® на папку с возможностью записи. На вкладке Кода С нажатия кнопки Build, чтобы сгенерировать Код С.
3. В сгенерированном коде наблюдайте данные таблицы с размещением массива основной строки. Для сравнения, вот данные таблицы в сгенерированном коде для размещения массива с основным столбцом.
В сгенерированном коде данные таблицы находятся в основном порядке строк, и алгоритм интерполяции оптимизирован для размещения массива основных строк. Алгоритм основной строки работает с данными таблицы, которая смежна в памяти. Это приводит к более быстрому доступу к кэшу, делая эти алгоритмы удобными для кэша.
В этой таблице обобщены отношения между размещением массива и удобными для кэша алгоритмами. Рекомендуется использовать алгоритм, который оптимизирован для заданного размещения массива, чтобы достичь хорошей эффективности. Для примера используйте алгоритм интерполяции с большой строкой, когда для размещения массива задано значение Row-Major
для генерации кода.
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);