createCRLEntry

Создайте запись таблицы замещения кода из спецификаций строк концептуальных аргументов и аргументов реализации

Описание

пример

tableEntry = createCRLEntry(crTable,conceptualSpecification,implementationSpecification) возвращает запись таблицы замещения кода. Запись сопоставляет концептуальное представление функции или оператора с реализацией представления. The conceptualSpecification аргумент является вектором символов или строковым скаляром, который задает имя и концептуальные аргументы, знакомые генератору кода, для заменяемой функции или оператора. The implementationSpecification Аргумент является символьным вектором или строковым скаляром, который задает имя и аргументы реализации C/C + + для функции замены.

Эта функция не поддерживает:

  • Реализации C++

  • Выравнивание данных

  • Замена оператора сетевыми аргументами наклона

  • Спецификации параметра входа (для примера, приоритета, алгоритма, информации о здании)

  • Замена семафоров и мьютексных функций

В спецификациях синтаксиса поместите пространство до и после символа оператора. Для примера используйте double u1 + double u2 вместо double u1+double u2. Кроме того, звездочка (*), тильда (~) и точка с запятой (;) имеют следующее значение.

СимволЗначение
*
  • Следуя поддерживаемому типу данных, такому как int32*, пройти мимо ссылки (указатель). Если концептуальные аргументы не скаляра, в спецификации реализации передайте их по ссылке.

  • Как часть определения типа данных с фиксированной точкой, такого как fixdt(1,32,*), подстановочный символ.

~Исходя из положения символа, наклоны или смещение должны быть одинаковыми для различных типов данных.
;Разделяет области значений размерностей. Для примера, [1 10; 1 100] задает вектор с длиной от 10 до 100.

В следующей таблице показан синтаксис концептуальных спецификаций и спецификаций реализации, основанных на:

  • Создается ли запись для функции или оператора.

  • Тип или характеристика замены кода.

Тип заменыКонцептуальный синтаксисСинтаксис реализации
Синтаксис замены кода функции
Типичный double y1 = sin(double u1)double y1 = mySin(double u1)
Выведите типы данных аргументов реализации из концептуальной спецификацииdouble y1 = sin(double u1)y1 = mySin(u1)
Выведите аргументы реализации и типы данных из концептуальной спецификацииdouble y1 = sin(double u1)mySin
Изменение типа данныхsingle y1 = sin(single u1)double y1 = mySin(double u1)
Переупорядочить аргументыdouble y1 = atan2(double u1, double u2)y1 = myAtan(u2, u1)
Задайте вектор-столбец аргументыdouble y1 = sin(double u1[10])double y1 = mySin(double* u1)
Задайте вектор-столбец аргументы и размерность области значенийdouble y1[1 100; 1 100] = sin(double u1[1 100; 1 100])mySin(double* u1, double* y1)
Переделайте возвращаемое значение как выходной аргументdouble y1 = sin(double u1)mySin(double u1, double* y1)
Задайте типы данных с фиксированной точкойfixdt(1,16,3) y1 = sin(fixdt(1,16,3) u1)int16 y1 = mySin(int16 u1)
Задайте типы данных с фиксированной точкой и задайте CheckSlope на false, CheckBias на true, и Bias к 0fixdt(1,16,*) y1 = sin(fixdt(1,16,*) u1)int16 y1 = mySin(int16 u1)
Задайте типы данных с фиксированной точкой и задайте SlopesMustBeTheSame на true, CheckSlope на false, CheckBias на true, и Bias к 0fixdt(1,16,~) y1 = sin(fixdt(1,16,~) u1)int16 y1 = mySin(int16 u1)
Задайте типы данных с фиксированной точкой и задайте SlopesMustBeTheSame на true, BiasMustBeTheSame на true, CheckSlope на false, и CheckBias на falsefixdt(1,16,~,~) y1 = sin(fixdt(1,16,~,~) u1)int16 y1 = mySin(int16 u1)
Задайте несколько выходных аргументов[double y1 double y2] = foo(double u1, double u2)double y1 = myFoo(double u1, double u2, double* y2)
Синтаксис замены кода оператора
Типичный int16 y1 = int16 u1 + int16 u2int16 y1 = myAdd(int16 u1, int16 u2)
Задайте типы данных с фиксированной точкойfixdt(1,16,3) y1 = fixdt(1,16,3) u1 + fixdt(1,16,3) u2int16 y1 = myAdd(int16 u1, int16 u2)
Задайте типы данных с фиксированной точкой и задайте CheckSlope на false, CheckBias на true, и Bias к 0fixdt(1,16,*) y1 = fixdt(1,16,*) u1 + fixdt(1,16,*) u2int16 y1 = myAdd(int16 u1, int16 u2)
Укажите типы данных с фиксированной точкой, подстановочный символ, уклоны должны быть одинаковыми и нулевое смещениеfixdt(1,16,~,0) y1 = fixdt(1,16,~,0) u1 + fixdt(1,16,~,0) u2int16 y1 = myAdd(int16 u1, int16 u2)
Приглашать на однотипные ролиint16 y1 = int8 u1int16 y1 = myCast(int8 u1)
Сдвигint16 y1 = int16 u1 << int16 u2
int16 y1 = int16 u1 >> int16 u2
int16 y1 = int16 u1 .>> int16 u2
int16 y1 = myShiftLeft(int16 u1, int16 u2)
int16 y1 = myShiftRightArithmetic(int16 u1, int16 u2)
int16 y1 = myShiftRightLogical(int16 u1, int16 u2)
Задайте реляционный операторbool y1 = int16 u1 < int16 u2bool y1 = myLessThan(int6 u1, int16 u2)
Задайте умножение и делениеint32 y1 = int32 u1 * in32 u2 / in32 u3int32 y1 = myMultDiv(int32 u1, int32 u2, int32 u3)
Задайте матричное умножениеdouble y1[10][10] = double u1[10][10] * double u2[10][10]myMult(double* u1, double* u2, double* y1)
Задайте поэлементное матричное умножениеdouble y1[10][10] = double u1[10][10] .* double u2[10][10]myMult(double* u1, double* u2, double* y1)
Задайте матричное умножение с транспонированием входного параметраdouble y1[10][10] = double u1[10][10]' * double u2[10][10]myMult(double* u1, double* u2, double* y1)
Задайте матричное умножение с Эрмитианом входном параметреcdouble y1[10][10] = cdouble u1[10][10]' * cdouble u2[10][10]
cdouble y1[10][10] = cdouble u1[10][10] * cdouble u2[10][10]'
myMult(cdouble* u1, cdouble* u2, cdouble* y1)
Задайте левое матричное делениеdouble y1[10][10] = double u1[10][10] \ double u2[10][10]myLeftDiv(double* u1, double* u2, double* y1)
Задайте правое матричное делениеdouble y1[10][10] = double u1[10][10] / double u2[10][10]myRightDiv(double* u1, double* u2, double* y1)

Примеры

свернуть все

Создайте файл определения таблицы, который содержит описание функции.

function crTable = crl_table_sinfcn()

В теле функции создайте таблицу замены кода.

crTable = RTW.TflTable;

Создайте запись таблицы для sin функция.

tableEntry = createCRLEntry(crTable, ...
    'double y1 = sin(double u1)', ...
    'double y1 = mySin(double u1)');

Установите параметры входа для sin функция. Чтобы сгенерировать код замены, укажите, что генератор кода использует заголовок и исходные файлы mySin.h и mySin.c.

setTflCFunctionEntryParameters(tableEntry, ...
    'ImplementationHeaderFile', 'mySin.h', ...
    'ImplementationSourceFile', 'mySin.c');

Добавьте запись в таблицу.

addEntry(crTable, tableEntry);

Создайте файл определения таблицы, который содержит описание функции.

function crTable = crl_table_addfcn()

В теле функции создайте таблицу замены кода.

crTable = RTW.TflTable;

Создайте запись таблицы для оператора сложения.

tableEntry = createCRLEntry(crTable, ...
    'int16 y1 = int16 u1 + int16 u2', ...
    'int16 y1 = myAdd(int16 u1, int16 u2)');

Установите параметры входа таким образом, чтобы запись задала сложение после суммы. Чтобы сгенерировать код замены, укажите, что генератор кода использует заголовок и исходные файлы myAdd.h и myAdd.c.

setTflCOperationEntryParameters(tableEntry, ...
    'EntryInfoAlgorithm', 'RTW_CAST_AFTER_OP', ...
    'ImplementationHeaderFile', 'myAdd.h', ...
    'ImplementationSourceFile', 'myAdd.c')); 

Добавьте запись в таблицу.

addEntry(crTable, tableEntry);

Создайте файл определения таблицы, который содержит описание функции.

function crTable = crl_table_intaddfcn()

В теле функции создайте таблицу замены кода.

crTable = RTW.TflTable;

Создайте запись таблицы для операции сложения с фиксированной точкой со знаком, требующей одинакового наклона между типами.

tableEntry = createCRLEntry(crTable, ...
    'fixdt(1,16,~,0) y1 = fixdt(1,16,~,0) u1 + fixdt(1,16,~,0) u2', ...
    'int16 y1 = myAdd(int16 u1, int16 u2)');

Установите параметры входа. Установите параметры алгоритма для режимов сложения после суммы, насыщения и округления. Чтобы сгенерировать код замены, укажите, что генератор кода использует заголовок и исходные файлы myIntAdd.h и myIntAdd.c.

setTflCOperationtionEntryParameters(tableEntry, ...
    'EntryInfoAlgorithm', 'RTW_CAST_AFTER_OP', ...
    'SaturationMode', 'RTW_SATURATE_ON_OVERFLOW', ...
    'RoundingMode', 'RTW_ROUND_SIMPLEST', ...
    'ImplementationHeaderFile', 'myIntAdd.h', ...
    'ImplementationSourceFile', 'myIntAdd.c');

Добавьте запись в таблицу.

addEntry(crTable, tableEntry);

Создайте файл определения таблицы, который содержит описание функции.

function crTable = crl_table_sinfcn()

В теле функции создайте таблицу замены кода.

crTable = RTW.TflTable;

Создайте запись таблицы для sin function, где аргументы реализации совпадают с концептуальными аргументами.

tableEntry = createCRLEntry(crTable, ...
    'double y1 = sin(double u1)', ...
    'y1 = mySin(u1)');

Установите параметры входа. Чтобы сгенерировать код замены, укажите, что генератор кода использует заголовок и исходные файлы mySin.h и mySin.c.

setTflCFunctionEntryParameters(tableEntry, ...
    'ImplementationHeaderFile', 'mySin.h', ...
    'ImplementationSourceFile', 'mySin.c'); 

Добавьте запись в таблицу.

addEntry(crTable, tableEntry);

Входные параметры

свернуть все

Таблица, которая хранит одну или несколько записей замещения кода, каждая из которых представляет потенциальную замену для функции или оператора. Каждая запись отображает концептуальное представление функции или оператора в представление реализации и приоритет.

Представление имени или символа и концептуальных входов и выходных аргументов для функции или оператора, который заменяет программное обеспечение, заданное как вектор символов или строковый скаляр. Концептуальные аргументы наблюдают соглашения об именовании ('y1', 'u1', 'u2',...) и типы данных, знакомые генератору кода. Используйте синтаксическую таблицу в Описании, чтобы определить синтаксис, который будет использоваться для спецификации концептуальных аргументов.

Пример: 'double y1 = sin(double u1)'

Пример: 'int16 y1 = int16 u1 + int16 u2'

Представление имени и вход реализации и выходные аргументы для функции замены C или C++, заданные как вектор символов или строковый скаляр. Аргументы реализации наблюдают за спецификациями имени C/C + + и типа данных. Используйте синтаксическую таблицу в Описании, чтобы определить синтаксис спецификации аргумента реализации.

Пример: 'double y1 = my_sin(double u1)'

Пример: 'int16 y1 = myAdd(int16 u1, int16 u2)'

Выходные аргументы

свернуть все

Запись таблицы замещения кода, которая представляет потенциальную замену кода для функции или оператора, возвращаемую как объект. Отображает концептуальное представление функции или оператора, conceptualSpecification, в представление реализации C/C + +, implementationSpecification.

Введенный в R2015a