MATLAB允许为自定义类重载各种运算符。不公开的可重载运算符之一是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's 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特定类的函数的句柄?
如果您的'end'函数位于matlab路径中,则matlab会根据输入将其视为评估的候选对象,在这种情况下,如果输入对象属于'table'类,则键入feval(str2func('end'),i, j)评估在@ table / end.m文件夹中定义的结束函数
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。