2010-12-31 5 views
2

저는 MATLAB을 사용할 때 때로는 일부 변수에 대한 의견을 말할 필요가 있다고 느낍니다. 이러한 변수 안에 이러한 주석을 저장하고 싶습니다. 따라서 작업 공간에서 많은 변수로 작업해야 할 때 이러한 변수 중 일부의 컨텍스트를 잊어 버렸습니다. 각 변수에 대한 주석을 읽을 수있었습니다. 그래서 변수에 주석을 달고 주석을 내부에 유지하고 싶습니다.MATLAB 변수에 코멘트하는 방법

+3

나는 어떤 프로그래밍 언어로 그런 것을 들어 본 적이 없다. 설명적인 변수 이름을 사용하십시오. 또는 필드 myVar1.value 및 myVar1.descr – Mikhail

+2

@Mikhail이있는 구조를 사용할 수도 있습니다. 그런 것도 들어 보지 못했습니다. 하지만 javadoc과 같은 메소드를 요구할 때 javadoc과 같은 질문을하고 있다고 생각합니다. IDE가 지원하는 경우 메소드 호출시 마우스를 가리키면 문서에 액세스 할 수 있습니다. 나는 그것이 변수들에 대해서도 효과가 있다고 생각한다. – nimcap

+0

"javadoc"을 모르겠다. – Peterstone

답변

4

내가 가장 좋은 (쉬운) 방법은 그들에게 설명하는 이름을 제공하여 변수 자체 문서화을하는 것입니다 의견의이야 동안은 은 실제로 당신이 할 수있는 방법이 무엇인지 MATLAB의 객체 지향 측면을 사용하고 싶습니다. 특히 내장 클래스를 하위 클래스로 만들어 변수를 설명하는 추가 속성이있는 새 클래스를 만들 수 있습니다.

실제로 정확히을 수행하는 an example in the documentation이 있습니다. 변수에 데이터를 설명하는 DataString 속성이 추가 된 것을 제외하고는 double과 똑같이 작동하는 새로운 클래스 ExtendDouble을 만듭니다. 서브 클래스를 사용하여 다음과 같은 작업을 수행 할 수 있습니다 :

N = ExtendDouble(10,'The number of data points') 
N = 
The number of data points 
    10 

N은 그냥 두 값이처럼 표현식에 사용할 수 있습니다. 이 예제 서브 클래스를 템플릿으로 사용하면 those you are not allowed to subclass (char, cell, structfunction_handle)을 제외한 다른 내장 숫자 클래스의 "주석이 달린"버전을 만들 수 있습니다. 물론

, 그 대신 내가 위의 예에서와 같이 ExtendDouble 클래스를 사용하는, 내가 대신과 같이 내 변수를 정의 할 수 있음을 주목해야한다 :

변수 그 자체로 문서를 만드는
nDataPoints = 10; 

, 약간의 타이핑이 필요 하긴하지만.;)

1

의견에 다른 변수를 지정하는 것은 어떻습니까?
예 :

\>> num = 5; 
\>> numc = 'This is a number that contains 5'; 
\>> whos 
... 

이에 유래 내 첫 번째 게시물입니다. 감사.

+1

위대한 첫 번째 게시물입니다! 내가 너무 좋아! – Peterstone

+0

정말 고마워요. –

0

구조체 (또는 셀, 구조체는 메모리를 추가로 사용해야 할 필요가 있음)를 사용 해본 적이 있습니까?

'>> dataset1.numerical = 5;

'>> dataset1.comment ='이것은 5 '을 포함하는 데이터 세트입니다.

dataset1 = 
    numerical: 5 
    comment: 'This is the dataset that contains 5' 
+0

좋은 점도 있지만 기능은 어떨까요? 일반적으로이 기능은이 유형의 데이터와 잘 작동합니까? – Peterstone

+0

안녕하세요, Peterstone 님, 다음은 어떨까요? data.x = 1 : 10; func.f1 = '죄 (data.x)'; 플롯 (data.x, eval (func.f1)) –

1

이 문제를 해결하기위한 편리한 방법은 저장 당신을 위해 코멘트의 표시를 허용하는 comments('myVar')로를 호출하는 경우 그 열기 대화 상자가 나타납니다 아래의 기능과 같은 즉, 무언가를하는 기능을 가지고있다 myVar 레이블이 붙은 변수 (또는 기능 또는 동료)에게 새로운 (또는 이전 읽기/업데이트) 주석을 입력하십시오.

다음 Matlab 세션에서는 댓글을 사용할 수 없습니다. 이 작업을 수행하려면 comments에 저장 /로드 기능을 추가해야합니다. 즉, 파일을 변경할 때마다 함수를 시작하고 database이 비어 있으면 가능한 경우 파일을로드해야합니다.

function comments(name) 
%COMMENTS stores comments for a matlab session 
% 
% comments(name) adds or updates a comment stored with the label "name" 
% 
% comments prints all the current comments 

%# database is a n-by-2 cell array with {label, comment} 
persistent database 

%# check input and decide what to do 
if nargin < 1 || isempty(name) 
    printDatabase; 
else 
    updateDatabase; 
end 

    function printDatabase 
     %# prints the database 
     if isempty(database) 
      fprintf('no comments stored yet\n') 
     else 
      for i=1:size(database,1) 
       fprintf('%20s : %s\n',database{i,1},database{i,2}); 
      end 
     end 
    end 
    function updateDatabase 
     %# updates the database 

     %# check whether there is already a comment 
     if size(database,1) > 0 && any(strcmp(name,database(:,1))) 
      idx = strcmp(name,database(:,1)); 
      comment = database(idx,2); 
     else 
      idx = size(database,1)+1; 
      comment = {''}; 
     end 

     %# ask for new/updated comment 
     comment = inputdlg(sprintf('please enter comment for %s',name),'add comment',... 
      5,comment); 

     if ~isempty(comment) 
      database{idx,1} = name; 
      database(idx,2) = comment; 
     end 
    end 
end 
1

항상은 항상 당신이하는 일을 문서화 한 스크립트로 항상 Matlab 편집기를 열어 둔다. 즉, 변수 할당 및 계산입니다.

예외 만 실험하려는 매우 짧은 세션입니다. 일단 파일을 추가하면 (파일 전체를 볼 수있을 때 잘라내어 붙여 넣기가 더 쉽습니다).

이렇게하면 처음부터 다시 시작할 수 있습니다. 그냥 clear all하고 스크립트를 다시 실행하십시오. 작업 공간에서 임의의 임시 테이블이 떠 다니는 일은 결코 없습니다.

결국, 작업이 끝나면 '배달 가능'에 가까운 내용을 갖게됩니다.