Этот пример иллюстрирует алгоритм интерполяции в 2D и 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. Чтобы включить упорядоченные по строкам алгоритмы, откройте диалоговое окно Configuration Parameters. На Математике и панели Типов данных, включите алгоритмы Использования параметра конфигурации, оптимизированные для упорядоченного по строкам размещения массивов. В качестве альтернативы в командном окне MATLAB, введите:
set_param(model,'UseRowMajorAlgorithm','on');
4. Симулируйте модель и наблюдайте те результаты в Data Inspector. Выходное значение равняется 4.
Упорядоченные по столбцам и упорядоченные по строкам алгоритмы отличаются только по порядку интерполяции. В некоторых случаях, из-за различной операции заказывают на том же наборе данных, вы можете испытать незначительные числовые различия в выходных параметрах упорядоченных по столбцам и упорядоченных по строкам алгоритмов. Для двумерной интерполяционной таблицы, используемой в модели в качестве примера, алгоритм интерполяции проиллюстрирован здесь.
2D табличные данные используются в модели rtwdemo_row_lut2d
:
Table_3by2.Value
ans = 1 4 2 5 3 6
1. Откройте диалоговое окно Configuration Parameters. В дополнение к включению алгоритмов Использования, оптимизированных для упорядоченного по строкам параметра конфигурации размещения массивов, на Генерации кода> Интерфейсная панель, устанавливает размещение параметра конфигурации Массивов на Row-Major
опция. Этот параметр конфигурации включает модель для упорядоченной по строкам генерации кода. В качестве альтернативы в командном окне MATLAB, введите:
set_param(model, 'ArrayLayout','Row-major');
2. Измените свою текущую папку в MATLAB® к перезаписываемой папке. На вкладке C Code нажмите 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);