How do i find the standard deviation of every row of a 12*18 cell array?

1 view (last 30 days)
How do I find the standard deviation of every column across each row of a 12*18 cell array?
Every cell contains a 69*69 double, and I want the output to be a 12*1 cell array, with each cell being a 69*69 double.
Find the attached 12*18 cell array.
c = load('mean.mat')
c = struct with fields:
z: {12×18 cell}
c.z{2,18}
ans = 69×69
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 29.2297 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.8942 0.6667 0 NaN NaN NaN
  8 Comments
Image Analyst
Image Analyst on 30 Jan 2023
"Cell 1x1 of the 69x69 output matrix will be..." <=== No. You said the output matrix is 12 by 1, not 69 by 69.
Is the stddev of the 69x69 matrix the stdev of all the non-nan values in the whole array, or do you want a 69x1 array which has the stdevs of each row in the 69x69 array?

Sign in to comment.

Answers (1)

Sulaymon Eshkabilov
Sulaymon Eshkabilov on 30 Jan 2023
Her is one solution:
C = load('mean.mat').z;
S =C;
for ii = 1:12
for jj=1:18
IDX = isnan(C{ii,jj});
S{ii,jj}(IDX)=0;
end
end
%%
ZS1 = cellfun(@std, S, 'UniformOutput', false);
ZS2 = cellfun(@std, ZS1, 'UniformOutput', false);
ZS2 = ZS2.';
ZSS = num2cell((std(cell2mat(ZS2)).')); % ANSWER

Categories

Find more on Matrices and Arrays 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!