Effacer les filtres
Effacer les filtres

calculate the mean of a matrix by the first column

1 vue (au cours des 30 derniers jours)
yue li
yue li le 24 Jan 2019
Commenté : yue li le 24 Jan 2019
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

Réponse acceptée

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

Connectez-vous pour commenter.

Plus de réponses (1)

Matt J
Matt J le 24 Jan 2019
Modifié(e) : Matt J le 24 Jan 2019
Or, with tables,
Out=varfun(@mean,array2table(M),'GroupingVariables','M1');
Out(:,2)=[],

Catégories

En savoir plus sur Interpolation dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by