首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异构阵列中的数学运算(Matlab)

异构阵列中的数学运算(Matlab)
EN

Stack Overflow用户
提问于 2017-04-06 14:06:32
回答 1查看 100关注 0票数 0

我在Matlab中创建了一个来自matlab.mixin.Heterogeneous类的异构对象数组。我的数组现在包含超类Cells的对象和子类,如NeuronAstrocyte等。我要分配给子类的方法应该根据不同的刺激来模拟它们的行为。为了计算行为,我需要对象来执行数学操作。但是,当我在类的方法中定义一个使用运算符的函数时,Matlab告诉我,例如:

未定义的运算符'-‘类型的输入参数’单元格‘。

然后,我尝试用多个继承( Cells < matlab.mixin.Heterogeneous & double )构造我的超类,但随后出现了这个错误:

使用单元格时出错:类'Cells‘不能是matlab.mixin.Heterogeneous的子类,也不能从类'double’继承'subsasgn‘方法。

这并不奇怪,正如它在“matlab.mixin.Heterogeneous”的描述中所说的那样

不能在子类中重写以下方法: ..。 子爵

由于我唯一的其他想法是将方法定义为类之外的函数,所以我想问是否有可能在异构对象数组中执行数学操作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-06 14:12:19

您需要将算术运算符定义为类的方法,否则它们将无法对您的自定义类进行操作。例如,为了支持减法,您需要为类重载minus

代码语言:javascript
复制
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元素。

所有算术运算符方法的列表都可以找到这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43257593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档