Чтобы дополнить ответ Амро, вы можете использовать feval
вместо builtin
.На самом деле нет никакой разницы, если только вы не попытаетесь перегрузить операторную функцию:
BUILTIN (...) - это то же самое, что и FEVAL (...), за исключением того, что она вызовет исходнуюв версии функции, даже если существует перегруженная версия (чтобы это работало, вы никогда не должны перегружать BUILTIN).
>> feval('_paren', magic(5), 3, 3) % M(3,3)
ans =
13
>> feval('_brace', num2cell(magic(5)), 3, 3) % C{3,3}
ans =
13
Интересно то, что feval
кажется незначительнымбыстрее, чем builtin
(на ~ 3,5%), по крайней мере, в Matlab 2013b, что странно, учитывая, что feval
необходимо проверить, не перегружена ли функция, в отличие от builtin
:
>> tic; for i=1:1e6, feval('_paren', magic(5), 3, 3); end; toc;
Elapsed time is 49.904117 seconds.
>> tic; for i=1:1e6, builtin('_paren', magic(5), 3, 3); end; toc;
Elapsed time is 51.485339 seconds.