Problem with the mean function

4 Ansichten (letzte 30 Tage)
Alexandre
Alexandre am 2 Mai 2012
Hi everyone,
I've got a little pb with the 'mean' function :
My matrix has a class 'double' on my workspace : &lt70080*1 double> I would like to do an average of those values :
moyenne = mean(refoulement(1:8760,1)) and the answer is NaN. The values are positives.
Do you have an idea ?
Thanks !

Akzeptierte Antwort

Kye Taylor
Kye Taylor am 2 Mai 2012
Try this
meanWithoutNans = mean(refoulement(~isnan(refoulement)));
  2 Kommentare
Alexandre
Alexandre am 2 Mai 2012
Ok it works perfectly. If i want to select some rows in my matrix, where should I put it ?
Here for ex : meanWithoutNans = mean(refoulement(~isnan(refoulement(1:i,:)))); ?
Ty
Kye Taylor
Kye Taylor am 2 Mai 2012
I interpret you question as, "How do I take the mean of rows in a matrix and avoid the nans?"
To do that, try
meanOfRowsWithoutNans = zeros(size(refoulement,1),1);
for i = 1:size(refoulement,1) % for each row
meanOfRowsWithoutNans(i) = ...
mean(refoulement(i,~isnan(refoulement(i,:))));
end

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (3)

Image Analyst
Image Analyst am 2 Mai 2012
What does this say:
hasNans = max(isnan(refoulement))
I want to see if there are any nan's in your original matrix.

Sean de Wolski
Sean de Wolski am 2 Mai 2012
If you have the Stats Toolbox, take a peak at:
doc nanmean
Also this FEX submission:

Alexandre
Alexandre am 2 Mai 2012
The answer for hasNans = max(isnan(refoulement)) is one thus I guess there are some NaN in the column.
What should I do then ?
I saw some topic explaining that in that case I have to code a function to get rid of the NaN, is that correct ?
Unfortunately, I don't have that toolbox.
Thanks for your help !

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by