Problem with the mean function

3 ビュー (過去 30 日間)
Alexandre
Alexandre 2012 年 5 月 2 日
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 日
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 日
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 日
If you have the Stats Toolbox, take a peak at:
doc nanmean
Also this FEX submission:

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

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by