【问题标题】:How to get A Dependent Property depending on properties of objects of different class in Matlab如何根据Matlab中不同类对象的属性获取依赖属性
【发布时间】:2013-10-08 10:04:33
【问题描述】:

请看下面的代码:

Ex_ObjA.m

classdef Ex_ObjA

    properties
        a
    end

    methods
        function Obj=Ex_ObjA(t)
           Obj.a = t; 
        end
    end    
end

Ex_ObjBC.m

classdef Ex_ObjBC 

    properties  
        b 
    end

    properties (Dependent = true, SetAccess = public)
        c
    end    

    methods
        function Obj=Ex_ObjBC(t)
           Obj.b = t; 
        end

        function c=get.c(Obj,s1) % error: Get methods must have exactly one input
           c = Obj.b + s1.a;
        end
    end
end

我尝试了以下操作:

s1 = Ex_ObjA(2);

s2 = Ex_ObjBC(3);

s2.c

不成功,因为“Get 方法必须只有一个输入”。所以我可以将s1.a 传递给Ex_ObjBC 得到s1.c

【问题讨论】:

  • 您需要将Ex_ObjA.m 类的对象存储在Ex_ObjBC.m 中,并在Dependent get 方法中使用它。你也可以只做一节课。另一种解决方案是创建一个函数而不是一个 Dependent 属性。

标签: matlab oop properties matlab-class


【解决方案1】:

c 并不是真正的 Dependent 属性,它是计算的结果。只需去掉 c 属性,并有一个方法 c = calculatec(Obj, s1) 来执行与现在相同的代码。

【讨论】:

  • 我定义了像 c=getc(Obj,s1) 这样的函数并使用 s2.getc(s1) 调用它。它有效,但我不明白为什么输入必须是这样的,一个是 (Obj,s1) 而调用者是 getc(s1) - 不一样。我知道它有效,但为什么呢?似乎 Obj 是 s2 的内部输入。谢谢...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-18
  • 2020-08-06
  • 1970-01-01
  • 2023-03-03
相关资源
最近更新 更多