我对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。
有人可以帮我这个吗?
编辑:全班发布
答案 0 :(得分:2)
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
编辑:你刚刚解决了吗?你的帖子不再像上面那样了。