在 MATLAB 中处理对象
一些 MATLAB® 函数返回对象。对象将数据(属性)与函数和方法结合在一起。对象属性包含数据,包括简单类型(如数字或文本),或者其他对象。函数和方法对对象本身执行操作。例如,这些函数可以作用于对象属性或更改对象的状态。
创建对象
在创建对象时,您可以将一个变量赋给该对象。该变量提供对该对象的属性和方法的访问权限。例如,histogram 函数的此语法不仅显示 x 中数据的直方图,还将该对象以输出 h 形式返回。
h = histogram(x)
创建一个显示 1000 个随机数的直方图对象。使用输出参量调用 histogram 会显示图、对象 (Histogram) 的类型或类以及对象属性及其值的部分列表。
x = randn(1000,1); h = histogram(x)

h =
Histogram with properties:
Data: [1000×1 double]
Values: [3 1 2 15 17 27 53 79 85 101 127 110 124 95 67 32 27 16 6 6 4 1 2]
NumBins: 23
BinEdges: [-3.3000 -3.0000 -2.7000 -2.4000 -2.1000 -1.8000 -1.5000 -1.2000 -0.9000 -0.6000 -0.3000 0 0.3000 0.6000 0.9000 1.2000 1.5000 1.8000 2.1000 2.4000 2.7000 3 3.3000 3.6000]
BinWidth: 0.3000
BinLimits: [-3.3000 3.6000]
Normalization: 'count'
FaceColor: 'auto'
EdgeColor: [0.1294 0.1294 0.1294]
Show all properties
在工作区中,直方图对象与其他活动变量一起列出,包括对象维度和对象类型。

获取和设置对象属性
对象属性包含数据。通过更改属性值,您可以修改对象的某些方面。您可以将圆点表示法与赋给对象的变量结合使用来访问和更改其属性。
对于直方图对象,属性包含原始数据、bin 数、每个条形的高度以及控制直方图外观的其他信息。例如,Orientation 是直方图对象的属性,它确定条形是水平显示还是垂直显示。您可以通过输入对象名称 (h)、圆点和属性名称来访问属性的值。
h.Orientation
ans = 'vertical'
您可以使用相同的语法更改属性的值,但需要添加等号和新值。
h.Orientation = "horizontal"
h =
Histogram with properties:
Data: [1000×1 double]
Values: [3 1 2 15 17 27 53 79 85 101 127 110 124 95 67 32 27 16 6 6 4 1 2]
NumBins: 23
BinEdges: [-3.3000 -3.0000 -2.7000 -2.4000 -2.1000 -1.8000 -1.5000 -1.2000 -0.9000 -0.6000 -0.3000 0 0.3000 0.6000 0.9000 1.2000 1.5000 1.8000 2.1000 2.4000 2.7000 3 3.3000 3.6000]
BinWidth: 0.3000
BinLimits: [-3.3000 3.6000]
Normalization: 'count'
FaceColor: 'auto'
EdgeColor: [0.1294 0.1294 0.1294]
Show all properties
并非所有对象属性都是可写的。属性可以是只读属性,意味着可以读取它,但尝试为其赋予新值会返回错误。例如,直方图的 Values 属性存储每个条形的高度,并在创建对象时计算。它是只读属性,因此您无法直接更改 Values。
接受对象的函数
一些函数设计用于对一个对象执行操作。这些函数可以是方法,它们是专为对象的一个类定义的,也可以是接受该对象作为普通输入参量的函数。在上述任一情况下,您都可以使用对象的变量作为输入。例如,Histogram 对象包括函数 morebins 和 fewerbins,它们分别增加和减少直方图 bin 数。访问 NumBins 属性以查看直方图中当前有多少个 bin。
h.NumBins
ans = 23
调用 morebins 以增加直方图 h 中的 bin 数。morebins 函数将 bin 数增加约 10%,因此 bin 数从 23 增大到 26。
morebins(h)

ans = 26
其他面向对象的编程语言经常使用圆点表示法调用方法,例如 h.morebins。MATLAB 中的方法也支持该语法。不过,为了示例代码的一致性,文档对大多数接受对象输入的方法和函数使用函数形式。
morebins 函数没有任何额外的输入参量,但并非所有接受对象的函数都是如此。除了对象本身,对象函数还可以有额外的输入参量,您可以使用标准函数语法将这些输入参量传递给函数。例如,您可以使用以下语法调用接受两个输入参量的对象函数:
functionName(objectVariable,arg1,arg2)
定义您自己的基于类的对象
除了 MATLAB 语言中提供的对象之外,您也可以使用面向对象的编程方法定义您自己的基于类的对象。该语言遵循标准 OO 约定。有关详细信息,请从创建简单类开始。