我有一个名为magV的1x28单元阵列,每个元素包含一个主要包含NaN的246x247矩阵。
我正在尝试设置for循环来遍历每个矩阵并计算平均值。到目前为止的尝试:
mean_speeds = cell(1,28);
for x = 1 : 28
mean_speeds{x} = mean(magV{x});
end
这不起作用;它只输出另一个1x28单元阵列,每个元素包含1x28行NaNs
我做错了什么?
答案 0 :(得分:2)
含有NaN的任何物质的平均值是NaN。去掉 。 。
mean(magV{x(~isnan(x))});
答案 1 :(得分:1)
mean
函数不支持NaN参数。您可以添加逻辑步骤以删除无效数字,然后计算结果数组的平均值。
或者,您可以使用nanmean
:see the nanmean Help Page
答案 2 :(得分:0)
您可以使用cellfun
摆脱循环。
如果你想忽视南方的
noNaN = cellfun(@(x) mean(x(~isnan(x))), magV, 'uni', 0);
如果您想将它们视为零
zeroNaN = cellfun(@(x) sum(x(~isnan(x)))/numel(x), magV, 'uni', 0);