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 Commenti

Do you get an error message, or is the value of c not what you expect?
Mr LE
Mr LE il 31 Gen 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)

Accedi per commentare.

 Risposta accettata

Star Strider
Star Strider il 31 Gen 2015
Modificato: Star Strider il 31 Gen 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 Commenti

Mr LE
Mr LE il 31 Gen 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 il 31 Gen 2015
I would like directly found the mean of 129x1 cell ...
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 il 31 Gen 2015
Thanks a lot!
My pleasure!

Accedi per commentare.

Più risposte (0)

Tag

Non è stata ancora inserito alcun tag.

Community Treasure Hunt

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

Start Hunting!

Translated by