Borrar filtros
Borrar filtros

calculate the mean of a matrix by the first column

1 visualización (últimos 30 días)
yue li
yue li el 24 de En. de 2019
Comentada: yue li el 24 de En. de 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

Respuesta aceptada

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

Iniciar sesión para comentar.

Más respuestas (1)

Matt J
Matt J el 24 de En. de 2019
Editada: Matt J el 24 de En. de 2019
Or, with tables,
Out=varfun(@mean,array2table(M),'GroupingVariables','M1');
Out(:,2)=[],

Categorías

Más información sobre Interpolation en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by