2017-11-15 1 views
0

동일한 입력을 전달하는 두 가지 다른 방법으로 Matlab에서 함수를 쓰는 방법을 알고 싶습니다.Matlab에서 입력을 전달하는 두 가지 다른 방법으로 함수 쓰기

이 중 하나의 예는 내장 함수 lsqcurvefit입니다. 이 같은 입력을 전달할 수 있습니다 :

x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)

처음 4 개 개의 인수가 필요합니다

마지막 3은 선택, 또는 당신이 이런 식으로 호출 할 수 있습니다 :

x = lsqcurvefit(problem)

problem은 동일한 입력을 포함하는 struct입니다. 이 경우 입력이 하나만 필요합니다.

내 질문은 : 어떻게 두 가지 방법으로 동일한 입력을받을 수있는 함수를 작성합니까?

설명서를 살펴본 결과 내가 찾지 못하는 단어 나 용어를 알 수 없으므로 찾지 못했을 수 있습니다. 누군가 나를 지적 할 수 있습니까? 나는 그것이 매우 간단하다고 확신한다. 아마 그것은 사소한 것이고 나는 그것을 놓치고있는 중입니까?

편집 : 내가 무엇을 찾고있는 수하는 '기능 오버로드'와 '함수 서명'것 같다.

+0

'vargin'와'nargin'는, 그냥 재미를 위해이 아이디어를 밀어 수 있습니다. 무엇을 나는 두 가지 방법으로 입력을 전달하려면, 키워드. – OmG

+0

@OmG 좋아하지만, 두 가지가 하나의 통과 것을 포함' 구조체를 다른 내부 구조와 함께. 그러면 nargin 내가 한 입력 있고 그 유형을 차별화 할 수 없을 것입니다 말해 줄 것이다. 그럴 수있는 방법이 있나요? – Ben

+0

내가 nargin 같은 느낌과 varargin 가난한 방법입니다 기능 행동을 일반적으로 바꿉니다. 행동을 바꾸기 위해 인풋의 수에 의존 할 필요는 없습니다. 아래의 회신 후, 나는 이제 "함수 오버로드"와 비슷한 것을 찾고 있음을 알게되었습니다. – Ben

답변

-3

내가 MATLAB에서 코드를 작성하는 방법에 대한 확실하지 오전하지만 개념은 모든 프로그래밍 언어는 그래서 "그냥 뜻이 4 개 매개 변수 및 기타 패스를 통과하여 하나의 메서드를 재정의하는 방법을 동일한이라고 생각 2. 예를 들어

//assume that the following method are defined within the class 

public void FirstFunction(int x, int y,int c,int f){ 
    System.out.print(x + y + c + f); 
} 

public void SecondFunction(int m,int s){ 
    System.out.print(m - s); 
} 

//within the main method on java you call these method 
//so it will depend on the number of parameters you have passed the it will call. 
+0

참조 : https://meta.stackoverflow.com/questions/290046/if-the-question-is - 특정 -에 대해 - 확실한 - 언어 -에 - 답변 -에 - anothe – excaza

관련 문제