MATLAB set class `size`(类上的重载操作)

标签 matlab

classdef Dog
end

d=Dog();可以控制size(d)吗?是否有一些要设置的属性或要重载的方法

最终我有 d.data = [1, 2, 3] 并且想要 length(d) == 3。我知道我可以制作d.length()。顺便说一句,是否有 MATLAB“魔术方法”列表,即控制与类交互的函数,例如 subsref

最佳答案

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

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

因此,您可以在 classdefmethods 部分中定义function size,以重载 size你的类。您还可以在 @Dog/ 目录中创建 size.m 文件来完成相同的操作。

例如,如果您创建一个包含函数定义的文件 @char/size.m,则您将重载 char 数组的 size


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

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

关于MATLAB set class `size`(类上的重载操作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73534180/

相关文章:

matlab - 我是否以正确的方式使用傅立叶变换?

Matlab ResizeFcn 回调

matlab - MatLab : Error handling of integer input

matlab - 如何在MATLAB中绘制一棵树,使其边缘成直角?

matlab - 如何在 Matlab 绘图中为某些 x 值切除部分 y Axis

octave - Matlab 中的三维 (3D) 矩阵插值

image - 在 MATLAB 中标记图形上的特定点

matlab - 如何在 MATLAB 中使用 FFT 和 findpeaks() 从 .WAV 文件重新创建乐器声音?

multithreading - 在MPI_Recv变量之前连续多次使用MPI_Send变量

Matlab 朴素贝叶斯