文档

在类中使用大小和numel

大小和元素个数

大小函数返回数组的维数。的元素个数函数返回数组中元素的个数,其值等于刺激(大小(objArray)).也就是数组维数的乘积。

大小元素个数函数与用户定义的对象数组一致地工作。通常不需要过载大小元素个数在用户定义的类。

几个MATLAB®函数使用大小元素个数执行他们的操作。因此,如果在类中重载这些函数,请确保类的对象与其他MATLAB函数一样工作。

如果类修改了数组索引,请参见重载numArgumentsFromSubscript而不是nummel

内置类行为

当你使用大小元素个数从内置类派生的类中的函数,这些函数的行为与它们在超类中的行为相同。

考虑内置类

d = 1:10;大小(d)
ans=110
元素个数(d)
ans=10
dsub = d(7:结束);大小(dsub)
Ans = 1 4

类定义这些行为,包括括号索引。

子类继承行为

除非子类显式重写超类行为,否则子类的行为与它们的超类类似。例如,简单加倍子类并且没有定义属性:

classdefSimpleDouble <双方法功能obj = SimpleDouble(数据)如果Nargin == 0 data = 0;结束obj = obj@double(数据);结束结束结束

创建一个对象并指定值1:10

sd = SimpleDouble (1:10);

大小函数返回超类部分的大小:

大小(sd)
ans=110

元素个数函数返回父类中元素的数量:

元素个数(sd)
ans=10

对象数组返回超类数组的大小:

大小((sd; sd))
答案:10
numel([sd;sd])
ans=20

简单加倍类继承类:

sdsub = sd(7:结束);大小(sdsub)
Ans = 1 4

非从内置类派生的类

考虑一个简单的值类。类的类数组行为不继承类。例如:

classdefVerySimpleClass性质价值结束结束

创建一个对象并将一个10元素数组指定给价值财产:

vs = VerySimpleClass;vs.Value = 1:10;大小(vs)
Ans = 1 1
努梅尔(vs)
ans = 1
大小([vs;vs])
答案:1
元素个数([vs; vs])
ans = 2

vs是一个标量对象。的价值属性是双打

大小(vs.Value)
ans=110

将索引表达式应用于对象属性:

vssub=vs.值(7:结束);大小(vssub)
Ans = 1 4

vs.Value属性是类的数组

类(vs.Value)
ans =双

创建一个数组VerySimpleClass对象:

vsArray (1:10) = VerySimpleClass;

价值数组元素2到10的属性为空:

isempty ([vsArray (2:10) value])
ans = 1

MATLAB不将标量展开应用于对象数组属性值赋值。使用交易为此目的的职能:

[vsArray。价值] = deal(1:10); isempty([vsArray.Value])
ans = 0

交易函数给每一个赋值价值财产的VSA阵列对象数组。

对象数组的索引规则等价于结构体

vsArray(1)。价值
Ans = 1 2 3 4 5 6 7 8 9 10
vsArray (1) value (6)
ans = 6

改变大小或数字的行为

内置数值类的子类继承一个大小方法,该方法对子类对象的超类部分进行操作(这些方法是隐藏的)大小元素个数若要执行不同的操作,请通过定义大小元素个数方法。

其他MATLAB函数使用这些函数返回的值大小元素个数行为,确保返回的值对类的预期用途是有意义的。

重载numArgumentsFromSubscript而不是nummel

如果类实现numArgumentsFromSubscript方法,MATLAB调用它而不是元素个数确定返回逗号分隔列表的索引表达式返回的元素数量。例如,这样的表达:

(1:2)。道具

二者都subsrefsubsasgn使用numArgumentsFromSubscript

  • subsref- - - - - -numArgumentsFromSubscript计算预期输出的数量(纳古特)返回subsref

  • subsasgn- - - - - -numArgumentsFromSubscript计算预期输入的数目(输入参数个数), MATLAB作为调用的结果赋值subsasgn

内置类的子类总是返回标量对象作为下标引用的结果,并且总是使用标量对象进行下标赋值。

如果您定义一个类,其中纳古特subsref输入参数个数subsasgn必须是一个特定的值,然后重载numArgumentsFromSubscript返回该值。

另请参阅

相关话题