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!

 채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2014년 10월 10일
편집: Azzi Abdelmalek 2014년 10월 10일

2 개 추천

a=[1 2 nan 3 nan 10]
nanmean(a)
%or
mean(a(~isnan(a)))

추가 답변 (2개)

Andrew Reibold
Andrew Reibold 2014년 10월 10일
편집: Andrew Reibold 2014년 10월 10일

0 개 추천

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
Image Analyst 2014년 10월 10일

0 개 추천

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
Image Analyst 2014년 10월 10일
Oops - just like Azzi's edit which he posted while I was composing my response.

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

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

질문:

2014년 10월 10일

댓글:

2014년 10월 10일

Community Treasure Hunt

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

Start Hunting!

Translated by