2013-04-23 3 views
0

행렬에 0이 채워져 있습니다. 나는 한 번에 하나의 값을 0으로 바꾸고 싶다. 나는 어떤 요소를 바꾸고 싶은지 결정해야한다. 내가 시도 다음함수 호출을 통해 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 

끝 나는 내가 원하는 것을 어느 정도 분명 희망

. 이 코드를 실행할 때 메시지가 나타납니다 : " 'Double'형식의 입력 인수에 대해"정의되지 않은 함수 'AddEmployee'가 발생했습니다. "

내 모든 파일이 같은 폴더에 있고 내 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 = 제로 (antpro, antmed); 끝 대신에? – Lasse

+0

나는이 선언을 시도 할 것이다 : function AddEmployee (obj, pronav, mednav) 첫 번째 방법은 괜찮아 보인다. – freude

+0

이것은 내 문제를 해결했다! 대단히 고마워, 내가 이미 시도했지만, 분명히 그렇게 생각하지 않았다. 설명서에서 둘 다 사용할 수있는 것 같습니다. 어쩌면 내가 잘못 해석 한 것일까? – Lasse

0

을 주셔서 감사합니다 그리고 당신은 그것의 인스턴스를 생성하고 (나는 당신이 모르고 그것을 만드는 관리 방법을 잘 모르겠지만) 그 AddEmployee 메서드를 호출 할 필요가 .

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

아마도 this information과 같은 소리가납니다. Object Oriented Programming 설명서를 참조하십시오.

+0

나는 단지 내가 0으로 행렬을 만들 때 인스턴스를 만들었다 고 생각했습니다. 내가 필요하다고 생각한 것은 이미 존재하는 행렬의 값을 변경하는 함수 였지만, 그것은 가능성이 없을 것입니다. – Lasse

+0

메소드가이 isntantiation의 범위를 벗어나 살기를 원하는 것 같습니다. 함수를 정적으로 만들 수 있습니까? –

+0

그게 무슨 뜻인지 모르겠다는 것을보고해서 죄송합니다.이 포럼에서 가장 절망적 인 케이스라고 생각해서 죄송합니다. 제 어리 석음을 받아주세요. – Lasse