在 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
我在变量 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