Этот пример иллюстрирует алгоритм интерполяции подтаблицы, которую блок интерполяции выбирает из таблицы более высокой размерности. Алгоритм интерполяции с выбором подтаблицы оптимизирован для размещения массива с основной строкой. В качестве ссылки смотрите алгоритм интерполяции с выбором подтаблицы, который оптимизирован для размещения массива основного столбца. Код, сгенерированный использованием алгоритма интерполяции больших строк, выполняет с лучшей скоростью и использованием памяти при работе с данными таблицы с размещением массива больших строк. Код, сгенерированный при помощи алгоритма column-major, лучше всего работает с размещением массива column-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. При импорте данных таблицы из файла необходимо переместить данные таблицы в файл перед ее импортом. Это сочетание сохраняет настраиваемую таблицу на протяжении всего рабочего процесса симуляции и генерации кода.
После перестановки данных таблицы моделируйте 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);