Используя обычные методы в Matlab
Я немного заржавел на Ой. У меня есть следующий код.
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)
а =
diag2by2 со свойствами:
a: 1
b: 2
a.matrix () Нет подходящего метода, свойства или матрицы поля для класса diag2by2.
Может кто-то помочь мне с этим?
Изменить: весь класс размещен
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
РЕДАКТИРОВАТЬ: Вы только что это исправили? Ваш пост больше не выглядит как выше.