MATLAB позволяет перегружать различные operators для пользовательских классов. Один из неуправляемых перегружаемых операторов - end, что можно узнать из \matlab\lang\end.m:
% END(A,K,N) is called for indexing expressions involving the object A
% when END is part of the K-th index out of N indices. For example,
% the expression A(end-1,:) calls A END method with END(A,1,2).
Примером такого метода является table.end (вставьте в командную строку MATLAB и нажмите "Открыть выбор", чтобы перейти к его определению, он определен в ...\matlab\datatypes\@tabular\end.m).
В отличие от обычного метода нельзя просто написать hEnd = @end, потому что это дает ошибку:
>> hEnd = @end;
hEnd = @end;
↑
Error: Illegal use of reserved keyword "end".
С другой стороны, запись e = str2func('end'); работает, но она ссылается на функцию по умолчанию end (даже при временном переходе в папку, где найден желаемый end.m).
Неудачные попытки включают str2func('table>end');, str2func('table\end');, str2func('table.end'); и @(a,b,c)table.end(a,b,c);.
Мой вопрос: Как создать дескриптор функции end для определенного класса?