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

David Young
David Young 2015년 1월 31일
Do you get an error message, or is the value of c not what you expect?
Mr LE
Mr LE 2015년 1월 31일
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)

댓글을 달려면 로그인하십시오.

 채택된 답변

Star Strider
Star Strider 2015년 1월 31일
편집: Star Strider 2015년 1월 31일

1 개 추천

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

Mr LE
Mr LE 2015년 1월 31일
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 2015년 1월 31일
I would like directly found the mean of 129x1 cell ...
Image Analyst
Image Analyst 2015년 1월 31일
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 2015년 1월 31일
Thanks a lot!
Star Strider
Star Strider 2015년 1월 31일
My pleasure!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Logical에 대해 자세히 알아보기

태그

아직 태그를 입력하지 않았습니다.

질문:

2015년 1월 31일

댓글:

2015년 1월 31일

Community Treasure Hunt

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

Start Hunting!

Translated by