MATLAB Language
`accumarray ()`함수의 사용법
수색…
소개
accumarray
사용하면 배열의 항목을 다양한 방법으로 집계하여 잠재적으로 프로세스의 항목에 일부 기능을 적용 할 수 있습니다. accumarray
는 경량 감속기 로 생각할 수 있습니다 ( MapReduce 소개 참조).
이 항목에는 accumarray
가 특히 유용한 일반적인 시나리오가 포함됩니다.
통사론
- accumarray (하위 스크립트 배열, 값 배열)
- accumarray (subscriptArray, valuesArray, sizeOfOutput)
- accumarray (subscriptArray, valuesArray, sizeOfOutput, funcHandle)
- accumarray (subscriptArray, valuesArray, sizeOfOutput, funcHandle, fillVal)
- accumarray (하위 스크립트 배열, valuesArray, sizeOfOutput, funcHandle, fillVal, isSparse)
매개 변수
매개 변수 | 세부 |
---|---|
subscriptArray | 인덱스의 벡터, 인덱스의 행렬 또는 인덱스 벡터의 셀 배열로 지정된 첨자 행렬입니다. |
valuesArray | 벡터 또는 스칼라로 지정된 데이터 |
sizeOfOutput | 출력 배열의 크기로, 양의 정수 벡터로 지정됩니다. |
funcHandle | 함수 핸들 또는 [] 로 지정된 집계 중에 각 항목 세트에 적용 할 함수입니다. |
fillVal | subs 값이 출력의 각 요소를 참조하지 않을 때의 채우기 값입니다. |
isSparse | 출력이 희소 배열이어야합니까? |
비고
- MATLAB v7.0에 도입되었습니다.
참고 문헌 :
- 2008 년 2 월 20 일 Loren Shure의 "Under-
accumarray
" -
accumarray
는 공식 MATLAB 문서에 있습니다.
다른 벡터로 그룹화 된 요소 중에서 최대 값 찾기
이것은 공식적인 MATLAB 예제입니다
다음 코드를 살펴보십시오.
month = [1;1;2;3;8;1;3;4;9;11;9;12;3;4;11];
temperature = [57;61;60;62;45;59;64;66;40;56;38;65;61;64;55];
maxTemp = accumarray(month,temperature,[],@max);
아래 이미지는이 경우에 accumarray
가 수행 한 계산 과정을 보여줍니다.
이 예에서, 동일한이 모든 값에 month
먼저 수집하고 4 번째 입력에 의해 지정된 기능하는 accumarray
(이 경우 @max
) 각각의 이러한 세트에인가된다.
이미지 패치에 필터 적용 및 각 픽셀을 각 패치 결과의 평균으로 설정
현대의 많은 Image Processing 알고리즘을 사용하는 패치가 기본 요소입니다.
예를 들어 패치를 제거 할 수 있습니다 (BM3D 알고리즘 참조).
그러나 가공 된 패치를 이미지로 만들 때 동일한 픽셀에 대해 많은 결과가 나타납니다.
이를 처리하는 한 가지 방법은 동일한 픽셀의 모든 값의 평균 (경험적 평균)을 취하는 것입니다.
다음 코드는 이미지를 패치로 나누는 방법과 [accumarray()][1]
사용하여 평균을 사용하여 패치에서 이미지를 재구성하는 방법을 보여줍니다.
numRows = 5;
numCols = 5;
numRowsPatch = 3;
numColsPatch = 3;
% The Image
mI = rand([numRows, numCols]);
% Decomposing into Patches - Each pixel is part of many patches (Neglecting
% boundariwes, each pixel is part of (numRowsPatch * numColsPatch) patches).
mY = ImageToColumnsSliding(mI, [numRowsPatch, numColsPatch]);
% Here one would apply some operation which work on patches
% Creating image of the index of each pixel
mPxIdx = reshape(1:(numRows * numCols), [numRows, numCols]);
% Creating patches of the same indices
mSubsAccu = ImageToColumnsSliding(mPxIdx, [numRowsPatch, numColsPatch]);
% Reconstruct the image - Option A
mO = accumarray(mSubsAccu(:), mY(:)) ./ accumarray(mSubsAccu(:), 1);
% Reconstruct the image - Option B
mO = accumarray(mSubsAccu, mY(:), [(numRows * numCols), 1], @(x) mean(x));
% Rehsape the Vector into the Image
mO = reshape(mO, [numRows, numCols]);
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow