GROUP BY in MATLAB
问题 I want to do what SQL's GROUP BY does in MATLAB. For example, M = [ 1, 5; 2, 5; 3, 5; 1, 6; 2, 6; 1,7 ] SQL: SELECT MAX(c1), c2 FROM M(c1, c2) GROUP BY 2 Result = [ 3, 5; 2, 6; 1, 7] How can I do this in Matlab? 回答1: grpstats in the Statistics Toolbox can do this: >> [grpstats(M(:,1), M(:,2), {'max'}) unique(M(:,2))] ans = 3 5 2 6 1 7 回答2: If you don't mind doing some preprocessing to get the order (or if the first column is nicely built from 1 to n ), you can do it like this: accumarray([1 2