2013-04-23 68 views
0

我有一個滿了零的矩陣。然後,我想一次將一個0改爲1。它必須是我決定我想改變的元素。我曾嘗試以下:通過函數調用在matlab中更改矩陣中的值

classdef project < handle 

properties 
     scheme 
end 

methods 
    function obj = project(antpro,antmed) 
     obj.scheme = zeros(antpro,antmed);   
    end  

    function obj = AddEmployee(pronav,mednav) 
     % Function adding a employee to the scheme 
     obj.scheme(pronav,mednav) = 1; 
    end 
end 

我希望它是有點清楚我想做的事情。當我運行此代碼時,我收到消息: 「Undefined function'AddEmployee',用於輸入'double'類型的輸入參數。」

我真的不明白這一點,因爲我所有的文件都位於同一個文件夾中,並且它是我的matlab會話的路徑。

預先感謝您 /拉塞

回答

1

matlab中的方法聲明需要傳遞obj作爲第一個參數。下面是相應的matlab文檔的鏈接: http://www.mathworks.nl/help/matlab/matlab_oop/ordinary-methods.html#brdqipw-1

+0

這沒有什麼意義?你是說我的第一個方法,需要是 function obj = project(antpro,antmed) obj = zeros(antpro,antmed); 結束 取而代之? – Lasse 2013-04-23 20:05:18

+0

我會嘗試這個聲明:function AddEmployee(obj,pronav,mednav)第一種方法似乎好 – freude 2013-04-23 20:13:12

+0

這已經解決了我的問題!非常感謝你,我以爲我已經嘗試過,但顯然不是。在文檔中似乎可以使用兩者?也許我誤解了!? – Lasse 2013-04-23 20:45:39

0

這是一類,你需要創建它的一個實例並調用其AddEmployee方法(雖然我不知道你是如何管理的不知道這個創建它) 。

>> prj = project(); % Create an instance 
>> prj.AddEmployee('a', 'name'); % Call a method in the instance 

聽起來像你可能會找到this information的使用。另請參閱Object Oriented Programming文檔。

+0

我只是認爲我創建了實例,因爲我創建了具有零點的矩陣。所有我認爲我需要的是改變已經存在的矩陣中的值的功能,但是這可能不是一種可能性。 – Lasse 2013-04-23 19:31:00

+0

這聽起來像你想要的方法生活在這個isntantiation的範圍之外。你可以使該功能是靜態的嗎? – 2013-04-23 19:43:34

+0

我很抱歉地報告,我不知道這意味着什麼,並且很遺憾地說我必須是這個論壇中最無可救藥的情況,所以請接受我的愚蠢.. – Lasse 2013-04-23 19:59:48