【问题标题】:using ordinary methods in matlab在matlab中使用普通方法
【发布时间】:2013-10-11 22:13:08
【问题描述】:

我对 Oop 有点生疏了。我有以下代码。

classdef diag2by2
    properties
        a;
        b;
    end
    methods
        function obj = diag2by2(a, b)
            obj.a = a;
            obj.b = b;
        end
        function obj = plus(obj1, obj2)
            temp = [obj1.a,  0; 0 obj1.b]+ [obj2.a, 0; 0 obj2.b];
            obj.a = temp(1,1);
            obj.b = temp(2,2);
        end
        function obj = minus(obj1, obj2)
            temp = -1*obj2;
            obj = plus(obj1, temp);
        end
        function obj = mtimes(obj1, obj2)
            temp1 = [obj1.a,  0; 0 obj1.b];
            temp2 = [obj2.a, 0; 0 obj2.b];
            temp3 = temp1*temp2;
            obj.a = temp3(1,1);
            obj.b = temp3(2,2);
        end
        function r = matrix(obj)
            r = [obj.a,  0; 0 obj.b];

        end
    end
end

我正在尝试为 2by2 对角矩阵创建一个类。我在定义方法时遇到了麻烦。我有,方法

    function r = matrix(obj)

这应该将我的对象转换为对角矩阵。但是当我尝试使用此方法时出现错误

a = diag2by2(1,2)

a =

具有属性的diag2by2:

a: 1
b: 2

a.matrix() 类没有合适的方法、属性或字段矩阵 diag2by2。

有人可以帮我解决这个问题吗?

编辑:全班发布

【问题讨论】:

  • 你能把全班都贴出来吗?
  • 我已经发布了整个代码

标签: matlab oop methods matlab-class


【解决方案1】:

matrix 嵌套在 mtimes 中:

function obj = mtimes(obj1, obj2)
    temp1 = [obj1.a,  0; 0 obj1.b];
    temp2 = [obj2.a, 0; 0 obj2.b];
    temp3 = temp1*temp2;
    obj.a = temp3(1,1);
    obj.b = temp3(2,2);
function r = matrix(obj)
    r = [obj.a,  0; 0 obj.b];
end
end

编辑:你刚刚修好了吗?您的帖子不再像上面那样。

【讨论】:

  • 复制有问题,我还是有问题
  • 奇怪:>> a.matrix ans = 1 0 0 2 一旦我解决了这个问题,你的代码就对我有用。
猜你喜欢
  • 2018-08-20
  • 1970-01-01
  • 2013-04-21
  • 1970-01-01
  • 2018-09-19
  • 2016-06-04
  • 2020-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多