的大小
函数返回数组的维数。的元素个数
函数返回数组中元素的个数,其值等于刺激(大小(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
方法,MATLAB调用它而不是元素个数
确定返回逗号分隔列表的索引表达式返回的元素数量。例如,这样的表达:
(1:2)。道具
二者都subsref
和subsasgn
使用numArgumentsFromSubscript
:
内置类的子类总是返回标量对象作为下标引用的结果,并且总是使用标量对象进行下标赋值。
如果您定义一个类,其中纳古特
为subsref
或输入参数个数
为subsasgn
必须是一个特定的值,然后重载numArgumentsFromSubscript
返回该值。