输出单元格数组中每个元素的均值时遇到问题(MATLAB)

时间:2015-08-08 15:09:13

标签: matlab

我有一个名为magV的1x28单元阵列,每个元素包含一个主要包含NaN的246x247矩阵。

我正在尝试设置for循环来遍历每个矩阵并计算平均值。到目前为止的尝试:

mean_speeds = cell(1,28);

for x = 1 : 28
    mean_speeds{x} = mean(magV{x});
end

这不起作用;它只输出另一个1x28单元阵列,每个元素包含1x28行NaNs

我做错了什么?

3 个答案:

答案 0 :(得分:2)

含有NaN的任何物质的平均值是NaN。去掉 。 。

mean(magV{x(~isnan(x))});

答案 1 :(得分:1)

mean函数不支持NaN参数。您可以添加逻辑步骤以删除无效数字,然后计算结果数组的平均值。

或者,您可以使用nanmeansee 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);