2010-01-20 3 views

답변

17

@ 연산자는 함수 핸들을 만듭니다.이 함수 핸들을 사용하면 변수와 같은 함수 호출을 쉽게 만들고 전달할 수 있습니다. 불행히도 당신에게 유용한 기능은 많지 않습니다. 왜냐하면 당신이 용의자로, 그것은 버전 7까지 matlab에 도입되지 않았기 때문에, 당신의 직후 릴리스.

7

이것은 Matlab에서 Anonymous Functions을 선언하는 데 사용됩니다.

나는이 용어가 "Function Handle"이라고 생각한다.

실질적으로 M 파일의 어느 위치에서든 Matlab이 함수를 선언 할 수 없다는 사실을 다룹니다.

당신은 여기에서 볼 수 있습니다 What is your favourite MATLAB/Octave programming trick?

내가는 "blockproc"명령과 함께 이미지 처리에 유용하다는 것을 발견했다.

+0

실제로 '핸들'이있는 그래픽 객체와 유사한 명명 규칙을 사용하여 함수 핸들 (핸들러가 아닙니다)이라고합니다. – MatlabDoug

+0

고쳐 주셔서 감사합니다. – Royi

1

function_handle (@) 구문 indirectlyexpand 모든 페이지 에 핸들 = @functionname 핸들 = @ (아글리스트) anonymous_function

설명

핸들 = @functionname 반환 함수를 호출에 사용

핸들 지정된 MATLAB® 함수의 핸들.

함수 핸들은 함수를 간접적으로 호출하는 방법을 제공하는 MATLAB 값입니다. 다른 함수 (종종 함수 함수라고 함)에 대한 호출에서 함수 핸들을 전달할 수 있습니다. 나중에 사용할 수 있도록 데이터 구조에 함수 핸들을 저장할 수도 있습니다 (예 : 핸들 그래픽 콜백). 함수 핸들은 표준 MATLAB 데이터 유형 중 하나입니다.

함수 핸들을 만들 때 지정한 함수는 MATLAB 경로와 핸들을 만드는 코드의 현재 범위에 있어야합니다. 예를 들어, 로컬 함수를 정의하는 파일 내에서 수행하는 한 로컬 함수에 대한 핸들을 작성할 수 있습니다. 이 조건은 함수 핸들을 평가할 때 적용되지 않습니다. 예를 들어 함수 핸들을 사용하여 별도의 (범위를 벗어난) 파일에서 로컬 함수를 실행할 수 있습니다. 이를 위해서는 핸들이 로컬 함수 (범위 내)에 의해 작성되어야합니다.

handle = @ (arglist) anonymous_function은 익명의 함수를 생성하고 해당 함수에 대한 핸들을 반환합니다. 괄호 오른쪽에있는 함수의 본문은 단일 MATLAB 문 또는 명령입니다. arglist는 쉼표로 구분 된 입력 인수 목록입니다. 함수 handle, handle을 사용하여 함수를 호출하여 함수를 실행합니다.

예 1 - 명명 된 기능 다음 예 핸들을 구성하는 돌기가 기능하는 기능 핸들을 생성하여 변수 fhandle에 할당.

fhandle = @humps; 인수를 전달하는 것과 같은 방법으로 핸들을 다른 함수에 전달하십시오. 이 예제는 방금 생성 된 함수 핸들을 fminbnd로 전달한 다음 [0.3, 1] 간격 동안 최소화합니다.

X = fminbnd (fhandle, 0.3, 1) = X 0.6370 fminbnd 함수는 함수 @humps 핸들을 평가한다. fminbnd 파일의 작은 부분이 아래에 나와 있습니다. 1 행에서 funfcn 입력 매개 변수는 전달 된 함수 핸들 @humps를 수신합니다. 행 113의 명령문은 핸들을 평가합니다.

1 함수 [xf, fval, exitflag, 출력] = ... fminbnd (funfcn, ax, bx, 옵션, varargin) . . . 113 fx = funfcn (x, varargin {:});

+0

업데이트 된 링크는 그냥 복사하는 것보다 낫다고 생각합니다. 최소한 "모두 확장 ...", "구문"등을 삭제하고 더 읽기 쉽도록 페이지에 정렬 할 수 있습니다. – Adiel

관련 문제