2011-08-27 8 views
7

내가 시퀀스를 플롯하려고, 난 함수 내가 지금Matlab에서 사용자 정의 함수를 오버로드하는 방법은 무엇입니까? 사람이 있는가,

function show_seq(seq1, seq2) 
    plot(seq1,'color','r'); 
    plot(seq2, 'color', 'b'); 
end 

을 추천 순서 뭔가를 보여주기 위해이 show_seq를 오버로드 할

function show_seq(seq) 
plot (seq) 
end 

에게 쓴하지만이 작동하지 않습니다 MATLAB에서 함수를 오버로드하는 방법에 대한 아이디어?

+0

관련 : http://stackoverflow.com/questions/8630889/overloading-functions/8631335

그러나, 귀하의 경우, 가장 쉬운 방법은 여러 선택 사항 입력을 받아 너무 show_seq을 수정하는 것입니다 # 8631335 –

답변

10

우선 순위가 높은 경로에 오버로드 기능을 넣으면 사용자 자신의 기능 중 하나를 오버로드 할 수 있습니다. 경로 우선 순위에 대한 자세한 내용은 this question을 참조하십시오.

function show_seq(varargin) 
    hold on %# make sure subsequent plots don't overwrite the figure 
    colors = 'rb'; %# define more colors here, 
       %# or use distingushable_colors from the 
       %# file exchange, if you want to plot more than two 

    %# loop through the inputs and plot 
    for iArg = 1:nargin 
     plot(varargin{iArg},'color',colors(iArg)); 
    end 
end 
+21

예수님, 제가 지금까지 건너 온 다른 모든 언어에서와 같이이 두 가지 과부하를 하나의 파일에 담을 수는 없습니까? – Grzenio

+2

@Grzenio : 트릭이 없다면 실제로 하나의 파일에 여러 개의 독립적 인 기능을 넣을 수는 없습니다. 그러나 다중 서명을 처리 할 수있는 하나의 함수를 작성하는 대신 다른 서명에 대해 함수의 대부분을 여러 번 복사하여 붙여 넣는 것이 더 쉽고 효율적이라고 생각하십니까? – Jonas

+15

일반적인 프로그래밍 언어에서는 일반적으로 실제 구현에서 가능한 모든 매개 변수와 함께 하나의 함수를 만들고 더 특수한 매개 변수 집합을 사용하는 몇 가지 함수를 만들고 매개 변수를 적용하고 일부 기본값을 제공하며 구현과 함께 함수를 호출합니다 . 복사 - 붙여 넣기의 주된 기능은 함수 이름입니다. – Grzenio

관련 문제