Определите, задана ли цель генерации кода цель
tf = coder.target(target)
возвращает true (1), если целью генерации кода является tf
= coder.target(target
)target
. В противном случае это возвращает false (0).
Если вы генерируете код для классов MATLAB®, MATLAB вычисляет начальные значения класса во время загрузки класса перед генерацией кода. Если вы используете coder.target
в инициализации свойства класса MATLAB, coder.target('MATLAB')
возвращает true.
coder.target
, чтобы параметризовать функцию MATLABПараметризуйте функцию MATLAB так, чтобы она работала в MATLAB или в сгенерированном коде. Когда функция запускается в MATLAB, она вызывает функцию MATLAB myabsval
. Сгенерированный код, однако, вызывает библиотечную функцию C myabsval
.
Запишите функции MATLAB myabsval
.
function y = myabsval(u) %#codegen y = abs(u);
Сгенерируйте статическую библиотеку C для myabsval
, с помощью опции -args
, чтобы задать размер, введите, и сложность входного параметра.
codegen -config:lib myabsval -args {0.0}
codegen
создает файл библиотеки myabsval.lib
и заголовочный файл myabsval.h
в папке \codegen\lib\myabsval
. (Расширение файла библиотеки может измениться в зависимости от вашей платформы.) Это генерирует функции myabsval_initialize
и myabsval_terminate
в той же папке.Запишите функцию MATLAB, чтобы вызвать сгенерированную библиотечную функцию C с помощью coder.ceval
.
function y = callmyabsval(y) %#codegen % Check the target. Do not use coder.ceval if callmyabsval is % executing in MATLAB if coder.target('MATLAB') % Executing in MATLAB, call function myabsval y = myabsval(y); else % add the required include statements to generated function code coder.updateBuildInfo('addIncludePaths','$(START_DIR)\codegen\lib\myabsval'); coder.cinclude('myabsval_initialize.h'); coder.cinclude('myabsval.h'); coder.cinclude('myabsval_terminate.h'); % Executing in the generated code. % Call the initialize function before calling the % C function for the first time coder.ceval('myabsval_initialize'); % Call the generated C library function myabsval y = coder.ceval('myabsval',y); % Call the terminate function after % calling the C function for the last time coder.ceval('myabsval_terminate'); end
Сгенерируйте MEX-функцию callmyabsval_mex
. Обеспечьте сгенерированный файл библиотеки в командной строке.
codegen -config:mex callmyabsval codegen\lib\myabsval\myabsval.lib -args {-2.75}
Вместо того, чтобы обеспечивать библиотеку в командной строке, можно использовать, чтобы задать библиотеку в функции. Используйте эту опцию, чтобы предварительно сконфигурировать сборку. Добавьте эту строку в блок else
:
coder.updateBuildInfo('addLinkObjects','myabsval.lib','$(START_DIR)\codegen\lib\myabsval',100,true,true);
Запустите MEX-функцию callmyabsval_mex
, который вызывает библиотечную функцию myabsval
.
callmyabsval_mex(-2.75)
ans = 2.7500
Вызовите функцию MATLAB callmyabsval
.
callmyabsval(-2.75)
ans = 2.7500
callmyabsval
показывает желаемое поведение для выполнения в MATLAB и в генерации кода.target
— цель генерации кода'MATLAB'
| 'MEX'
| 'Sfun'
| 'Rtw'
| 'HDL '
| 'Custom'
Цель генерации кода, заданная как вектор символов или скаляр строки. Задайте одну из этих целей.
'MATLAB' | Выполнение в MATLAB (не генерирующий код) |
'MEX' | Генерация MEX-функции |
'Sfun' | Симуляция модели Simulink® |
'Rtw' | Генерируя LIB, DLL или цель EXE |
'HDL' | Генерация цели HDL |
'Custom' | Генерация пользовательской цели |
Пример: tf = coder.target('MATLAB')
Пример: tf = coder.target("MATLAB")
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.