# I keep getting NaN values when computing the mean and standard deviation of an array

9 views (last 30 days)
Cai Chin on 6 Jan 2021
Commented: Walter Roberson on 8 Jan 2021
Hi, I am attempting to calculate the mean of all the rows in a cell array called 'XTrain2_all' comprised of 4x30 doubles, however I keep getting NaN values instead of 4 mean values. The same happens when computing the standard deviation. How do I stop this from happening? Thanks in advance.
XV = [XTrain2_all{:}];
mu = mean(XV,2);
sg = std(XV,[],2);

Walter Roberson on 6 Jan 2021
Each of your rows has 30 NaN values.
In rows 1 and 2, they are in columns 95221 to 95250.
In rows 3 and 4, they are in columns 94951 to 94980 .
mean() of a value that includes nan is going to be nan, because anything added to nan gives nan as a result.
You can use
XV = [XTrain2_all{:}];
mu = mean(XV, 2, 'omitnan');
sg = std(XV, [], 2, 'omitnan');
Walter Roberson on 8 Jan 2021
Just loop. It isn't worth overthinking the situation.

### Categories

Find more on Managing Data in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by