我在Matlab中创建了一个来自matlab.mixin.Heterogeneous类的异构对象数组。我的数组现在包含超类Cells的对象和子类,如Neuron、Astrocyte等。我要分配给子类的方法应该根据不同的刺激来模拟它们的行为。为了计算行为,我需要对象来执行数学操作。但是,当我在类的方法中定义一个使用运算符的函数时,Matlab告诉我,例如:
未定义的运算符'-‘类型的输入参数’单元格‘。
然后,我尝试用多个继承( Cells < matlab.mixin.Heterogeneous & double )构造我的超类,但随后出现了这个错误:
使用单元格时出错:类'Cells‘不能是matlab.mixin.Heterogeneous的子类,也不能从类'double’继承'subsasgn‘方法。
这并不奇怪,正如它在“matlab.mixin.Heterogeneous”的描述中所说的那样
不能在子类中重写以下方法: ..。 子爵
由于我唯一的其他想法是将方法定义为类之外的函数,所以我想问是否有可能在异构对象数组中执行数学操作。
发布于 2017-04-06 14:12:19
您需要将算术运算符定义为类的方法,否则它们将无法对您的自定义类进行操作。例如,为了支持减法,您需要为类重载minus
methods
function self = minus(self, other)
% Loop through the array and apply the - operator to each
for k = 1:numel(self)
self(k).prop1 = self(k).prop1 - other.prop1;
self(k).prop2 = self(k).prop2 - other.prop2;
end
end
end请注意,异类数组的minus方法需要确保适当处理不同类的self元素。
所有算术运算符方法的列表都可以找到这里。
https://stackoverflow.com/questions/43257593
复制相似问题