calculate the mean of a matrix by the first column

4 visualizzazioni (ultimi 30 giorni)
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

Risposta accettata

Matt J
Matt J il 24 Gen 2019
Out = [unique(M(:,1)) splitapply(@(z)mean(z,1), M(:,2:end), G)]
  1 Commento
yue li
yue li il 24 Gen 2019
Hello, Matt J,
This works!
Thank you so much fro your great help!
With Best!
Yue

Accedi per commentare.

Più risposte (1)

Matt J
Matt J il 24 Gen 2019
Modificato: Matt J il 24 Gen 2019
Or, with tables,
Out=varfun(@mean,array2table(M),'GroupingVariables','M1');
Out(:,2)=[],

Categorie

Scopri di più su Polynomials in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by