在MATLAB中用单元数组中的零替换NaN

时间:2015-01-15 09:43:25

标签: matlab replace nan cell-array

我在变量raw_data中有一个50x25的单元格数组。每个单元包含200x150矩阵。我在所有这些值之间散布了一些NaN值,我想将它们设置为zeros,以确保它们不会在后期干扰。

我尝试了以下内容:

raw_data(cellfun(@(x) any(isnan(x), raw_data, 'UniformOutput', false)) = 0

运行脚本时,我没有为类'cell'的值定义“Function'ubindex'”。有人可以帮帮我吗?

提前致谢!

1 个答案:

答案 0 :(得分:4)

这个怎么样:

cellfun(@(x) nansum(x,ndims(x)+1), raw_data, 'UniformOutput', false)

请注意,如果您确定raw_data只有二维矩阵,则可以将ndims(x)+1替换为3

我们的想法是使用nansum对第3维求和,因为这将保留前2维的形状,幸运的是nansum似乎将NaN转换为0当所有被求和的元素都是NaN