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

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

В этом примере, вас:

  • Интерполируйте на выбранной подтаблице с упорядоченным по столбцам и упорядоченным по строкам алгоритмом.

  • Сохраните семантику блока посредством табличного сочетания.

  • Сгенерируйте код с упорядоченным по строкам алгоритмом и размещением массивов.

Симулируйте при помощи упорядоченного по строкам алгоритма

1. Открытая модель rtwdemo_col_interpselsubtable в качестве примера и rtwdemo_row_interpselsubtable.

open_system('rtwdemo_col_interpselsubtable');
open_system('rtwdemo_row_interpselsubtable');

2. По умолчанию Simulink конфигурирует модель с упорядоченным по столбцам алгоритмом и упорядоченным по столбцам размещением массивов. Модель rtwdemo_col_interpselsubtable сконфигурирован, чтобы использовать упорядоченный по столбцам алгоритм. Запустите модель и наблюдайте выходной сигнал, сохраненный в переменной yout рабочей области.

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

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

4. Симулируйте модель и наблюдайте ошибку.

Упорядоченные по столбцам и упорядоченные по строкам алгоритмы отличаются в терминах подтабличного порядка выбора и интерполяции. Подтабличный выбор выполняется в исходной таблице. Никакая дополнительная память не выделяется для подтаблицы. Выбранная подтаблица непрерывна в памяти. Порядок интерполяции благоприятен для кэша для упорядоченных по столбцам алгоритмов с упорядоченными по столбцам размещениями массивов и упорядоченных по строкам алгоритмов с упорядоченными по строкам размещениями массивов. Этот рисунок сравнивает упорядоченные по строкам и упорядоченные по столбцам интерполяции с подтабличным выбором.

Из-за изменения в семантике, упорядоченные по столбцам и упорядоченные по строкам интерполяции выполняются на различных подтаблицах или наборах данных. Эта интерполяция приводит к различным числовым выходным параметрам или ошибке.

Сохраните семантику посредством табличного сочетания

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

1. Блок rtwdemo_col_interpselsubtable/Interp дали 3-D табличные данные, когда T3d = изменяются ([1:24], 3,2,4) и один порт выбора с входом 2 (индекс на основе 0). Выбранная подтаблица является T3d (:: 3) (индекс на основе 1 в MATLAB) для упорядоченного по столбцам алгоритма. Чтобы сохранить семантику для упорядоченного по строкам алгоритма на той же модели, то есть, выбирают ту же подтаблицу с тем же индексом и входными параметрами порта выбора, переставляют таблицу, как T3d_p = переставляют (T3d, [3,1,2]). Выбранная подтаблица является T3d_p (3: :) (индекс на основе 1) для упорядоченного по строкам алгоритма.

T3d_str = get_param('rtwdemo_col_interpselsubtable/Interp','Table');
set_param('rtwdemo_col_interpselsubtable/Interp','Table', ...
    ['permute(',T3d_str,',[3,1,2])']);

2. Когда вы данные о таблице импорта из файла, необходимо переставить табличные данные в файле прежде, чем импортировать его. Это сочетание сохраняет таблицу настраиваемой в рабочем процессе генерации кода и симуляции.

Сгенерируйте код при помощи упорядоченного по строкам размещения алгоритма и массива

После перестановки табличных данных, модели rtwdemo_col_interpselsubtable сконфигурирован для упорядоченной по строкам симуляции. Модель эквивалентна предварительно сконфигурированной модели rtwdemo_row_interpselsubtable это использует упорядоченный по строкам алгоритм.

1. Чтобы настроить модель для упорядоченной по строкам генерации кода, откройте диалоговое окно Configuration Parameters. В дополнение к выбору алгоритмов Использования, оптимизированных для упорядоченного по строкам параметра конфигурации размещения массивов, на Генерации кода> Интерфейсная панель, устанавливает размещение параметра конфигурации Массивов (Simulink Coder) на Row-Major опция. Этот параметр конфигурации включает модель для упорядоченной по строкам генерации кода. В качестве альтернативы в Окне Команды MATLAB, введите:

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

2. В диалоговом окне исследуйте переставленные 3-D табличные данные и выбранную 2D подтаблицу.

3. Измените свою текущую папку в MATLAB® к перезаписываемой папке. На вкладке C Code нажмите Build, чтобы сгенерировать код С. В сгенерированном коде наблюдайте 2D алгоритм интерполяции, оптимизированный для упорядоченных по строкам данных.

close_system('rtwdemo_col_interpselsubtable',0);

Похожие темы