Matlab内置对象的方法

时间:2019-08-24 14:06:03

标签: matlab matlab-class

这两个调用序列 get(a)和a.get()有什么区别?

load gong
a = audioplayer(y, Fs);
a.get
get(a)

1 个答案:

答案 0 :(得分:1)

默认情况下,没有区别。但是,该行为可以修改。

默认情况下,对于自定义类的对象,obj.method(arg1,arg2,...)method(obj,arg1,arg2,...)的语法糖。这意味着当您编写前者时,MATLAB会假装您编写了后者,然后进行相应的处理。

但是,可以为类重载方法subsref,在这种情况下,将为语法obj.method(arg1,arg2,...)调用此函数。也就是说,MATLAB将其解释为索引操作(.method),然后是另一个索引操作((arg1,arg2,...))。调用subsref方法以评估这些索引操作。可以实现这种方式,以便在这种情况下调用适当的方法,但是对其他索引操作(例如obj(x)obj{x})执行自定义索引代码。例如,请参见here