В этом примере показано, как Simulink выбирает вектор или матрицу 2-D из данных таблицы. В 2-D таблице выходной вектор может быть столбцом или строкой в зависимости от настройки конфигурации модели Использовать алгоритмы, оптимизированные для макета основного массива строк. В этом примере алгоритм Direct Lookup Table оптимизирован для компоновки основного массива строк. Алгоритм «Таблица прямого поиска» (Direct Lookup Table), оптимизированный для компоновки основного массива столбца, также представлен в качестве ссылки. Код, генерируемый с помощью алгоритма интерполяции основной строки, работает с наилучшей скоростью и использованием памяти при работе с данными таблицы с макетом основной строки. Код, генерируемый с помощью алгоритма «основной столбец», лучше всего работает с макетом массива «основной столбец».
В этом примере выполняется следующее:
Выведите вектор или плоскость с помощью прямого поиска с помощью алгоритма «столбец-мажор» или «строка-мажор».
Сохранение семантики при переходе от алгоритма типа столбец-мажор к алгоритму тип строка-мажор.
Создайте код, используя основной алгоритм строки и макет массива.
Открыть примеры моделей rtwdemo_row_dlut3d_selvector и rtwdemo_col_dlut3d_selvector.
open_system('rtwdemo_row_dlut3d_selvector'); open_system('rtwdemo_col_dlut3d_selvector');


1. По умолчанию Simulink настраивает модель с алгоритмом «основной столбец» и компоновкой массива «основной столбец». Модель rtwdemo_col_dlut3d_selvector предварительно сконфигурирован для использования основных алгоритмов столбцов. Моделирование модели и наблюдение за выходными данными, хранящимися в переменной рабочей области yout.
2. Чтобы включить основные алгоритмы строк, откройте диалоговое окно Параметры конфигурации (Configuration Parameters). На панели Математика (Math) и Типы данных (Data Types) выберите параметр конфигурации Использовать алгоритмы, оптимизированные для компоновки основного массива строк (Use algoriths optimized for row-major array layout). Кроме того, в окне команды MATLAB введите:
set_param('rtwdemo_col_dlut3d_selvector','UseRowMajorAlgorithm','on');
3. На вкладке Моделирование (Simulation) щелкните Выполнить (Run), чтобы смоделировать модель. Наблюдать за изменением выходных измерений и числовых значений, зарегистрированных в переменной рабочей области yout.
Алгоритмы «столбец-большая» и «строка-большая» семантически различаются в выборе выходного вектора. Например, в таблице 2-D Simulink выбирает вектор столбца в качестве выходного для основного алгоритма столбца и вектор строки для основного алгоритма строки. В таблице с 3-D или более высоким измерением Simulink выбирает выходной вектор из первого измерения таблицы для основного алгоритма столбца и из последнего измерения таблицы для основного алгоритма строки. Элементы выбранного вектора являются смежными в табличной памяти. В этом примере последнее измерение является третьим измерением таблицы 3-D. Из-за семантического изменения алгоритмы таблицы прямого поиска типа «столбец-большая» и «строка-большая» выводят различные векторные и числовые значения.
Эти иллюстрации сравнивают векторные выходные данные алгоритмов таблицы прямого поиска строки и столбца в таблице 3-D.


Для таблицы прямого поиска, которая выводит вектор или матрицу 2-D, семантика модели изменяется при переключении с алгоритма «столбец-мажор» на алгоритм «строка-мажор». Чтобы сохранить семантику или обеспечить тот же выход для тех же соединений ввода-вывода блока, необходимо переставить данные таблицы. В противном случае Simulink распространяет неверные размеры на дочерние блоки.
1. Блок rtwdemo_col_dlut3d_selvector/Direct Lookup Table (n-D) имеет 3D данные о столе, которые T3d = изменяют ([1:24], 3,2,4) и два входных порта со стоимостью 0 и 1 (оба - индексы на основе 0). Выбранный выходной вектор является T3d (:, 1,2) (индекс на основе 1) для основного алгоритма столбца. Чтобы сохранить семантику для алгоритма мажор-строка в той же модели, то есть выбрать тот же вектор с теми же входами порта индекса, переставьте таблицу как T3d_p = permute (T3d, [2,3,1]). Для алгоритма основной строки выбранный вектор равен T3d_p (1,2,:).
T3d_str = get_param('rtwdemo_col_dlut3d_selvector/Direct Lookup Table (n-D)','Table'); set_param('rtwdemo_col_dlut3d_selvector/Direct Lookup Table (n-D)','Table',... ['permute(',T3d_str,',[2,3,1])']);
2. При импорте данных таблицы из файла необходимо переставить данные таблицы в файле перед его импортом. Эта перестановка обеспечивает возможность настройки таблицы на протяжении всего процесса моделирования и создания кода.
После перестановки данных таблицы Simulink настраивает модель rtwdemo_col_dlut3d_selvector для моделирования основных строк. Модель эквивалентна предварительно сконфигурированной модели. rtwdemo_row_dlut3d_selvector имеет перестановку данных таблицы и использует основной алгоритм строки.
1. Чтобы настроить эти модели для генерации основного кода строки, откройте диалоговое окно Параметры конфигурации (Configuration Parameters). В дополнение к включению параметра конфигурации Use algoriths optimized for row-major array layout, на панели Code Generation > Interface установите для параметра конфигурации Array layout значение Row-Major вариант. Этот параметр конфигурации активизирует модель для генерации кода основной строки. Либо в окне команды MATLAB введите:
% For model 'rtwdemo_col_dlut3d_selvector' set_param('rtwdemo_col_dlut3d_selvector', 'ArrayLayout','Row-major'); % For model 'rtwdemo_row_dlut3d_selvector' set_param('rtwdemo_row_dlut3d_selvector', 'ArrayLayout','Row-major');
2. В диалоговом окне «Таблица прямого поиска (n-D)» проверьте данные перестановочной таблицы 3-D.

3. Измените текущую папку в MATLAB ® на папку с возможностью записи. На вкладке Код C (C Code) щелкните Создать (Build), чтобы создать код C. В созданном коде memcpy функция заменяет for петли. Используя memcpy уменьшает объем памяти для хранения данных. Эта оптимизация повышает скорость выполнения.

open_system('rtwdemo_row_dlut3d_selplane'); open_system('rtwdemo_col_dlut3d_selplane');


1. Открыть пример модели rtwdemo_row_dlut3d_selplane , которая выводит матрицу плоскости или 2-D из таблицы 3-D.
2. Моделирование и генерация кода из модели путем повторения шагов, выполняемых в rtwdemo_col_dlut3d_selvector. Здесь проиллюстрированы алгоритмы прямого поиска строк и столбцов, которые выводят матрицу 2-D из таблицы 3-D.


close_system('rtwdemo_row_dlut3d_selvector',0); close_system('rtwdemo_col_dlut3d_selvector',0); close_system('rtwdemo_row_dlut3d_selplane',0); close_system('rtwdemo_col_dlut3d_selplane',0);