Ограничения на обработку функций для создания кода
При использовании дескрипторов функций в коде MATLAB ®, предназначенном для создания кода, соблюдайте следующие ограничения:
Не используйте одну и ту же привязанную переменную для ссылки на другие дескрипторы функций
В некоторых случаях использование одной и той же связанной переменной для ссылки на различные дескрипторы функций вызывает ошибку времени компиляции. Например, этот код не компилируется:
function y = foo(p)
x = @plus;
if p
x = @minus;
end
y = x(1, 2);
Не передавать дескрипторы функций в или из coder.ceval
Нельзя передавать дескрипторы функций в качестве входов или выходов из coder.ceval (Кодер MATLAB). Например, предположим, что f и str.f являются дескрипторами функций:
f = @sin;
str.x = pi;
str.f = f;
Следующие инструкции приводят к ошибкам компиляции:
coder.ceval('foo', @sin);
coder.ceval('foo', f);
coder.ceval('foo', str);
Не связывайте дескриптор функции с внешней функцией
Невозможно создать дескриптор функции, который ссылается на внешнюю функцию MATLAB.
Не передавать дескрипторы функций во внешние функции и из них
Нельзя передавать дескрипторы функций в или из feval и другие внешние функции MATLAB.
Не передавать дескрипторы функций в функции начального уровня или из них
Нельзя передавать дескрипторы функций в качестве входов или выходов из функций начальной точки. Например, рассмотрим эту функцию:
function x = plotFcn(fhandle, data)
assert(isa(fhandle,'function_handle') && isa(data,'double'));
plot(data, fhandle(data));
x = fhandle(data);
В этом примере функция plotFcn получает дескриптор функции и его данные в качестве входных данных. plotFcn пытается вызвать функцию, на которую ссылается fhandle со входом data и постройте график результатов. Однако этот код создает ошибку компиляции. Ошибка указывает на то, что функция isa не распознает 'function_handle' в качестве имени класса при вызове внутри функции MATLAB для задания свойств входных данных.
Не пытаться просмотреть дескрипторы функций из отладчика
Невозможно отобразить или просмотреть дескрипторы функций отладчика. Дескрипторы функций отображаются как пустые матрицы.
Не используйте функциональные дескрипторы для сигналов Simulink, параметров или памяти хранения данных
В блоке MATLAB Function можно использовать дескрипторы функций. Нельзя использовать функциональные дескрипторы для сигналов, параметров или памяти хранилища данных Simulink ®.
Связанные темы