MATLAB设置类"大小"(类上的重载操作)


classdef Dog
end

d=Dog();是否可以控制size(d)?是否有一些property需要设置或method需要过载?

最终,我喜欢d.data = [1, 2, 3],想要length(d) == 3。我知道我可以制作d.length()。顺便提一下,是否有MATLAB";魔术方法";,即控制与类交互的函数,如subsref?

在MATLAB中,不要认为类方法与其他语言中的类方法相似。实际上,它们是函数的重载版本。

如果d是自定义类的对象,并且size为该类重载,则size(d)d.size()相同(与d.size相同,调用函数不需要括号(。

因此,您可以在classdefmethods部分中定义function size,以重载类的size。您也可以在@Dog/目录中创建一个size.m文件来完成同样的任务。

例如,如果创建了一个文件@char/size.m,其中包含函数定义,则会为char数组重载size


以上适用于任何函数。有些函数在过载时会引起头痛。例如,重载numel时要小心,因为这可能会导致索引赋值表达式失败。whos命令以及GUI中的类似功能使用size来显示变量信息,因此让它按预期方式运行非常重要。

您可能想要更改的对象行为显然不是函数,它与运算符有关。每个运算符也由一个函数定义(包括索引中的end!(。有关完整列表,请参阅文档。

最新更新