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

Replace NaN with zeros in cell array in MATLAB

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

我试过以下方法:

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

当运行脚本时,我得到"Function 'subindex' is not defined for values of class 'cell'"。谁能帮帮我吗?

提前致谢!

这个怎么样:

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

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

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