MATLAB: How to get the maximum of repetitive elements in certain portions of a matrix

unique

I have a 2000×2 matrix, and "for each 10×2 segment of this matrix", I need to calculate the maximum of corresponding values (second column) of repetitive values (first column) in the matrix. Like if the 3rd 10×2 segment of the matrix is this:
...
[2 20;
2 30;
2 40;
7 100;
7 110;
7 120;
7 130;
7 140;
15 240;
15 260]
...
I want to get this:
...
[2 40;
7 140;
15 260]
...
And so on. I have written the following but it gives me the maximum of repetitive elements through the "whole matrix":
[uv,~,idx] = unique(A(:,1));
B = [uv accumarray(idx,A(:,2),[],@max)];
But again, I need to do this "for each separate 10×2 segments of the matrix", and then store the results in a 'whatever x 2' sized matrix! Does anyone have any ideas how I could do this?

Best Answer

The only way I can see to do this is with a loop that selects and analyses each 10-row segment.
This works:
A = [2 20;
2 30;
2 40;
7 100;
7 110;
7 120;
7 130;
7 140;
15 240;
15 260
4 20;
4 30;
4 40;
10 100;
10 110;
10 120;
16 130;
16 140;
25 240;
25 260
4 20;
4 30;
4 40;
10 100;
10 110;
10 120;
16 130;
16 140;
25 240;
25 260];
for k1 = 1:10:size(A,1)
T = A(k1:k1+9,:);
[uv,~,idx] = unique(T(:,1));
B{ceil(k1/10)} = [uv accumarray(idx,T(:,2),[],@max)]; % Output Cell Array
end
It seems to do what you want.