HOW TO GROUP THE ELEMENTS OF AN ARRAY
이전 댓글 표시
I've a 252*51 array, i want to group it three-by-three elements and do mean of these groups one-by-one, creating a new array 84*51 which every row is the mean of three elements of the first array
채택된 답변
추가 답변 (2개)
Prakash S R
2022년 5월 10일
편집: Prakash S R
2022년 5월 10일
A more "arithmetic" approach:
So you want to take a 252x51 matrix X and produce a 84x51 matrix Y, right? I would suggest premultiplying X with a 84x252 matrix A that sums successive rows with weights of 1/3.
Thus, Y = (1/3)*A*X, where A has the form
[1 1 1 0 0 0 0 0 0 0 0....
0 0 0 1 1 1 0 0 0 0 0...
0 0 0 0 0 0 1 1 1 0 0 ...
:
0 0 0 ... 1 1 1]
You can construct A using
aa = [[1 1 1], zeros(1,249)];
Atmp = triu(toeplitz(aa));
A = Atmp(1:3:end, :);
Image Analyst
2022년 5월 10일
One way is to use blockproc(). It's in the Image Processing Library.
meanFilterFunction = @(theBlockStructure) mean(theBlockStructure.data(:)); % Define mean function.
blockSize = [3, 3]; % Whatever window size you want.
% Get an output image where each pixel is the average of a 3x3 window in
% the original image.
blockyImage = blockproc(grayImage, blockSize, meanFilterFunction);
I'm attaching a script with several ways to use it. Adapt as needed.

카테고리
도움말 센터 및 File Exchange에서 Convert Image Type에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!