2016-07-07 69 views
1

我目前使用以下代码来获得结构中存储的8766个矩阵的平均值matData,但是当我在Mcell(1x8766单元格)内部查看时,存储在每个单元格中的所有值均为重复的单元格1x1。我想知道我做错了什么,因为我将采取这种结构中所有矩阵的nanmean在结构中存储的所有矩阵的平均值

Mcell = arrayfun(@(x) matData(sprintf('(%d)',x)).shape, 1:8766, 'uni', 0); 
M = nanmean(reshape(cell2mat(Mcell), 192, 144, []), 3); 

附加说明:matData是1x8766结构与matdata 1个文件被称为matData(i).shape其中i=1:8766并192x144双。

谢谢您的所有意见和帮助。

+0

不是第一线一样'MCELL = arrayfun(@(x)的x.shape,matData, '单',0 )'?看似迂回的做事方式 –

回答

1

你只需要的struct2cellcell2matnanmean组合:

matData = cell2struct(num2cell(randn(192,144,8766),[1,2]), 'shape', 1); % Sample input 

result = nanmean(cell2mat(struct2cell(matData)),3); 
+0

谢谢!我也会尝试你的方式。我继续做,并做到了这一点:'lflocrcp45 = struct2cell(matData); matlfrcp45 = cell2mat(lflocrcp45);' – vesp

+0

那么,这正是我的答案所说......和额外的'nanmean'调用 –