createCRLEntry

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

Описание

пример

tableEntry = createCRLEntry(crTable,conceptualSpecification,implementationSpecification) возвращает заменяющую запись таблицы кода. Запись сопоставляет концептуальное представление функции или оператора к представлению реализации. conceptualSpecification аргумент является вектором символов или скаляром строки, который задает имя и концептуальные аргументы, знакомые генератору кода, для функции или оператора, чтобы заменить. 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 функция, где аргументы реализации совпадают с концептуальными аргументами.

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