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

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

В этом примере вы:

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

  • Сохраните семантику блоков через сочетание таблицы.

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

Симулируйте с использованием алгоритма Row-Major

1. Откройте пример модели rtwdemo_col_interpselsubtable и rtwdemo_row_interpselsubtable.

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

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

3. Чтобы включить алгоритмы основной строки, откройте диалоговое окно Параметров конфигурации. На панели Math and Data Types выберите параметр конфигурации Use algorithms optimized for row-major array layout Альтернативно, в Командном окне MATLAB введите:

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

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

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

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

Сохраните семантику через сочетание таблицы

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

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

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

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

1. Чтобы настроить модель для генерации кода основной строки, откройте диалоговое окно Параметров конфигурации. В сложение с выбором алгоритмов Use, оптимизированных для параметра row-major array размещения configuration, на панели Генерации кода > Interface установите параметр конфигурации Array размещения равным Row-Major опция. Этот параметр конфигурации включает модель для генерации кода основной строки. Кроме того, в Командном Окне MATLAB введите:

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

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

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

close_system('rtwdemo_col_interpselsubtable',0);

Похожие темы