how to find mean with nan
3 ビュー (過去 30 日間)
古いコメントを表示
Hi!
I want to find mean with nan values and with different step. My script is:
RowDivision=[1,46,172,305,472,618,714,784,920];
nElement=diff(RowDivision); % step
meanG=cellfun(@mean,(mat2cell(G,nElement,ones(size(G,2),1)))); %mean
but if i have one only nan value i.e. from 1 to 46 the mean is nan. How can I ignore the nan? Thank you!
0 件のコメント
採用された回答
Azzi Abdelmalek
2014 年 10 月 10 日
編集済み: Azzi Abdelmalek
2014 年 10 月 10 日
a=[1 2 nan 3 nan 10]
nanmean(a)
%or
mean(a(~isnan(a)))
0 件のコメント
その他の回答 (2 件)
Andrew Reibold
2014 年 10 月 10 日
編集済み: Andrew Reibold
2014 年 10 月 10 日
Use nanmean
If you dont have it, I wrote this
For an array, x
n_nans = 0;
temp = x;
for i = 1:length(x)
if isnan(x(i))
temp(i) = 0;
n_nans = n_nans+1;
end
end
mean = sum(temp)/(length(temp)-n_nans)
Image Analyst
2014 年 10 月 10 日
If you have the Stats toolbox, use nanmeans. If you don't, you can do it in two lines of code, one to find the nans and one to get the mean:
% Create sample data
RowDivision=[1,46,172,305,472,618,714,784,920];
% Make some nans
RowDivision(2) = nan;
RowDivision(4) = nan
% Find the nans
nanElements = isnan(RowDivision)
% Compute the mean with no nans being considered.
meanNoNans = mean(RowDivision(~nanElements))
Actually you can do that in one line of code if you want.
1 件のコメント
Image Analyst
2014 年 10 月 10 日
Oops - just like Azzi's edit which he posted while I was composing my response.
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!