calculate the mean of a matrix by the first column

1 次查看(过去 30 天)
Hello,
I just leaned MATLAB.
I want to calculate the mean of a matrix by the first column:
Input:
1 9 7 5 7
2 1 1 1 3
2 5 5 4 4
3 1 1 1 3
3 5 5 4 4
3 1 1 1 3
3 5 6 4 4
4 1 8 1 3
4 5 5 4 4
5 1 5 1 3
6 1 4 1 3
7 5 5 4 4
Output:
1 9 7 5 7
2 3 3 2.5 3.5
3 3 3.25 2.5 3.5
4 3 6.5 2.5 3.5
5 5 1 5 1
6 6 1 4 1
7 7 5 5 4
My code:
G = findgroups(M(:,1 ));
Out = [unique(M(:,1)) splitapply(@mean, M(:,2:end), G)]
Error using vertcat
Dimensions of matrices being concatenated are not consistent.
Error in splitapply>localapply (line 257)
finalOut{curVar} = vertcat(funOut{:,curVar});
Error in splitapply (line 132)
varargout = localapply(fun,splitData,gdim,nargout);
Thanks in advance for any suggestions and help!
Yue

采纳的回答

Matt J
Matt J 2019-1-24
Out = [unique(M(:,1)) splitapply(@(z)mean(z,1), M(:,2:end), G)]

更多回答(1 个)

Matt J
Matt J 2019-1-24
编辑:Matt J 2019-1-24
Or, with tables,
Out=varfun(@mean,array2table(M),'GroupingVariables','M1');
Out(:,2)=[],

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by