짧은 대답 : 내장 함수는 숫자 형 배열에 대해 함수가 arrayfun
수행하는 작업을 정확히 map
수행합니다.
>> y = arrayfun(@(x) x^2, 1:10)
y =
1 4 9 16 25 36 49 64 81 100
유사하게 작동하는 두 가지 다른 내장 함수가 있습니다. cellfun
(셀형 배열의 요소에서 작동) 및 structfun
(구조의 각 필드에서 작동).
그러나 벡터화, 특히 요소 별 산술 연산자를 사용하는 경우 이러한 함수는 종종 필요하지 않습니다 . 당신이 준 예에서 벡터화 된 솔루션은 다음과 같습니다.
>> x = 1:10;
>> y = x.^2
y =
1 4 9 16 25 36 49 64 81 100
일부 연산은 요소간에 자동으로 작동하며 (예 : 벡터에 스칼라 값 추가) 다른 연산자는 요소 별 연산을위한 특수 구문 ( .
연산자 앞에으로 표시됨 )이 있습니다. MATLAB의 많은 내장 함수는 요소 별 연산 (종종 예를 들어 sum
및 같은 주어진 차원에 적용됨)을 사용하여 벡터 및 행렬 인수에서 작동하도록 설계되었으므로 mean
맵 함수가 필요하지 않습니다.
요약하면 다음은 배열의 각 요소를 제곱하는 몇 가지 다른 방법입니다.
x = 1:10; % Sample array
f = @(x) x.^2; % Anonymous function that squares each element of its input
% Option #1:
y = x.^2; % Use the element-wise power operator
% Option #2:
y = f(x); % Pass a vector to f
% Option #3:
y = arrayfun(f, x); % Pass each element to f separately
물론 이러한 간단한 작업의 경우 옵션 # 1이 가장 현명하고 효율적인 선택입니다.