Problem with the mean function

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 !

 採用された回答

Kye Taylor
Kye Taylor 2012 年 5 月 2 日

0 投票

Try this
meanWithoutNans = mean(refoulement(~isnan(refoulement)));

2 件のコメント

Alexandre
Alexandre 2012 年 5 月 2 日
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 2012 年 5 月 2 日
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

サインインしてコメントする。

その他の回答 (3 件)

Image Analyst
Image Analyst 2012 年 5 月 2 日

0 投票

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 2012 年 5 月 2 日

0 投票

If you have the Stats Toolbox, take a peak at:
doc nanmean
Also this FEX submission:
Alexandre
Alexandre 2012 年 5 月 2 日

0 投票

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 !

カテゴリ

ヘルプ センター および File ExchangeMatrices and Arrays についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by