Matlab inline VS анонимные функции

Есть ли веская причина выбирать между использованием встроенных функций против анонимных функций в MATLAB? Этот точный вопрос был задан и получен ответ здесь, но ответ не полезен для новичков в MATLAB-пользователях, потому что фрагменты кода неполны, поэтому они не запускаются при вставке в командное окно MATLAB. Может кто-нибудь дать ответ с фрагментами кода, которые можно вставить в MATLAB?

2 ответа

Решение

Анонимные функции заменили встроенные функции (как указано в документах и ​​в размещенной вами ссылке)

Документы предупреждают:

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

Вот как бы я представил ответ Олега в своем стиле:

Случай 1 - определить анонимную функцию с параметром a и аргумент xin

a = 1;
y = @(x) x.^a;
xin = 5;
y(xin) 
% ans =
%      5

Случай 2 - изменить параметр a в рабочей области, чтобы показать, что анонимная функция использует исходное значение a

a = 3;
y(xin)
% ans =
%      5

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

clear all
y = @(x) x.^a;
xin = 5;
y(xin)
% ??? Undefined function or variable 'a'.

% Error in ==> @(x)x.^a

z = inline('x.^a','x');
z(xin)
% ??? Error using ==> inlineeval at 15
% Error in inline expression ==> x.^a
% ??? Error using ==> eval
% Undefined function or variable 'a'.
% 
% Error in ==> inline.subsref at 27
%     INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);

Случай 4 Сравнение производительности и прохождения a как переменная.

clear all;
y = @(x,a) x.^a;
ain = 2;
xin = 5;
tic, y(xin, ain), toc
% ans =
%     25
% Elapsed time is 0.000089 seconds.

tic, z = inline('x.^a','x','a'), toc
z(xin, ain)
% z =
%      Inline function:
%      z(x,a) = x.^a
% Elapsed time is 0.007697 seconds.
% ans =
%     25

С точки зрения производительности, анонимный >> встроенный.

Другие вопросы по тегам