exponenta event banner

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

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

В этом примере выполняется следующее:

  • Интерполировать выбранную вложенную таблицу с помощью алгоритма «столбец-большая» и «строка-большая».

  • Сохранение семантики блоков посредством перестановки таблиц.

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

Моделирование с использованием основного алгоритма строки

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);

Связанные темы