Этот пример иллюстрирует алгоритм интерполяции субтаблицы, которую блок интерполяции выбирает из таблицы более высоких размеров. Алгоритм интерполяции с выбором субтаблицы оптимизирован для компоновки главного массива строк. В качестве ссылки см. алгоритм интерполяции с поднабором, оптимизированным для компоновки основного массива столбца. Код, генерируемый с помощью алгоритма интерполяции основной строки, работает с наилучшей скоростью и использованием памяти при работе с данными таблицы с макетом основной строки. Код, генерируемый с помощью алгоритма «основной столбец», лучше всего работает с макетом массива «основной столбец».
В этом примере выполняется следующее:
Интерполировать выбранную вложенную таблицу с помощью алгоритма «столбец-большая» и «строка-большая».
Сохранение семантики блоков посредством перестановки таблиц.
Создание кода с основным алгоритмом строки и макетом массива.
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). На панели Математика (Math) и Типы данных (Data Types) выберите параметр конфигурации Использовать алгоритмы, оптимизированные для компоновки основного массива строк (Use algoriths optimized for row-major array layout). Кроме того, в окне команды 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 = permute (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). В дополнение к выбору параметра конфигурации Use algoriths optimized for row-major array layout, на панели Code Generation > Interface установите параметр конфигурации Array layout равным Row-Major вариант. Этот параметр конфигурации активизирует модель для генерации кода основной строки. Либо в окне команды MATLAB введите:
set_param('rtwdemo_col_interpselsubtable', 'ArrayLayout','Row-major');
2. В диалоговом окне проверьте перестановочные данные таблицы 3-D и выбранную подтаблицу 2-D.

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

close_system('rtwdemo_col_interpselsubtable',0);