2013-10-04 52 views
0

我在Oop上有點生疏。我有以下代碼。在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)

A =

diag2by2與性能:

a: 1 
b: 2 

a.matrix() 沒有合適的方法,屬性或類別 diag2by2的字段矩陣。

有人可以幫助我嗎?

編輯:全班公佈

+0

你可以發佈全班? – chappjc

+0

我已經發布了整個代碼 – Leo04577

回答

2

您已經嵌套在mtimesmatrix

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 

編輯:你剛纔修復它?你的帖子不再像上面那樣。

+0

它是在複製一個問題,我仍然有 – Leo04577

+0

奇怪的問題: '>> a.matrix' 'ANS ='' 1 0' '0 2' 你的代碼工作對我來說,一旦我修好了。 – chappjc

+0

現在工作。也許那個錯位的結局就是問題所在。 – Leo04577