Problem with the mean function

Hi,
I have a problem with the mean function. I want to have the mean of a matrix A (129x1)
but the function : c= mean (A) doesn't work.
How could I solve this Problem ?

2 comentarios

David Young
David Young el 31 de En. de 2015
Do you get an error message, or is the value of c not what you expect?
Mr LE
Mr LE el 31 de En. de 2015
The error message is:
Undefined function 'sum' for input arguments of type 'cell'.
Error in mean (line 82) y = sum(x,dim,flag)/size(x,dim);
Error in Devoir1vo (line 16) c= mean (A)

Iniciar sesión para comentar.

 Respuesta aceptada

Star Strider
Star Strider el 31 de En. de 2015
Editada: Star Strider el 31 de En. de 2015
In the Command Window, type:
which mean -all
I suspect it will result with the first line being:
mean is a variable.
If it does, you will have to rename whatever your ‘mean’ variable is. (This is the most common problem when built-in functions abruptly fail to work correctly.)
EDIT —
You didn’t mention that ‘A’ was a cell. You can convert it easily to a double array by using the ‘{:}’ notation:
A = {rand(10,1)};
c = mean(A{:});

7 comentarios

Mr LE
Mr LE el 31 de En. de 2015
I don't think the problem is with the mean function. Is that possible it's because of 'cell'type data ?
Yes. When I tried it with a cell, it gave the same error.
Another, albeit more indirect, way to take the mean of a cell variable:
c = cellfun(@mean, A);
Both this and my previous version work.
Mr LE
Mr LE el 31 de En. de 2015
I would like directly found the mean of 129x1 cell ...
Image Analyst
Image Analyst el 31 de En. de 2015
Why did you ever stick your data into a cell array in the first place? If you didn't then where did it come from? xlsread() or something?? Can you just use a regular numerical array?
@Mr LE —
The mean function will not work on cell arrays. (I thought we already established that.) You have to convert them to double arrays first. (The reason is that cell arrays can contain non-numeric data.)
The two methods I mentioned are two ways I know of to do it. Still another option is:
c = mean(cell2mat(A));
You can create your own function to take the mean of a cell. I call it ‘cellmean’ here:
cellmean = @(c) cellfun(@mean, c);
c = cellmean(A);
So long as your cell array contains only numeric data, it should work without problems.
Mr LE
Mr LE el 31 de En. de 2015
Thanks a lot!
Star Strider
Star Strider el 31 de En. de 2015
My pleasure!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Etiquetas

Aún no se han introducido etiquetas.

Preguntada:

el 31 de En. de 2015

Comentada:

el 31 de En. de 2015

Community Treasure Hunt

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

Start Hunting!

Translated by