내 질문 : 나는 Matlab 질문에 대한 많은 좋은 대답이 종종 함수를 사용한다는 것을 알았습니다 bsxfun
. 왜?
동기 : 에 대한 Matlab 문서 bsxfun
에서 다음 예제가 제공됩니다.
A = magic(5);
A = bsxfun(@minus, A, mean(A))
물론 우리는 다음을 사용하여 동일한 작업을 수행 할 수 있습니다.
A = A - (ones(size(A, 1), 1) * mean(A));
실제로 간단한 속도 테스트는 두 번째 방법이 약 20 % 빠릅니다. 첫 번째 방법을 사용하는 이유는 무엇입니까? bsxfun
"수동"접근 방식보다 사용 속도가 훨씬 빠른 환경이 있다고 생각 합니다. 나는 그러한 상황의 예와 그것이 더 빠른 이유에 대한 설명을 보는 데 정말로 관심이 있습니다.
또한 Matlab 문서에서 다시 한 번이 질문에 대한 하나의 마지막 요소는 다음과 bsxfun
같습니다. "C = bsxfun (fun, A, B)는 함수 핸들 fun에 의해 지정된 요소 별 이진 연산을 단일 배열을 사용하여 배열 A 및 B에 적용합니다. 확장 가능. " "싱글 톤 확장 사용"이라는 문구는 무엇을 의미합니까?
timeit
당신 / angainor / Dan이 제공하는 링크 의 기능 을 읽음으로써 이것에 대해 배웠습니다 .
tic...toc
줄을 바꾸면 코드 속도는 함수를 메모리로 읽어야하는 데 달려 있습니다.