gpt4 book ai didi

matlab - 在 MATLAB 中替换单元格的值

转载 作者:太空宇宙 更新时间:2023-11-03 20:13:56 24 4
gpt4 key购买 nike

假设 M 是一个 5x1 的单元格,它看起来像:

3x3 double
3x3 double
3x3 double
3x3 double
3x3 double

举例来说,第一个单元格是:

3  NaN  1
0 1 NaN
4 8 9

我想将每个单元格的 NaN 值替换为零。但是,由于 cellfun 不支持显式赋值(=),我无法正确使用它,如下所示:

D = cellfun(@(x) x(isnan(x)) = 0, D, 'UniformOutput', false);

有办法吗?

最佳答案

那时候不要使用cellfun。使用实际的 for 循环:

for ii = 1 : numel(D)
D{ii}(isnan(D{ii})) = 0;
end

cellfun 在本质上是一个 for 循环。但是,如果您真的打算使用 cellfun,因为匿名函数不支持赋值,您可以做的一件事就是编写一个补充函数来执行您的操作尝试在您的代码中执行此操作,然后在您使用 cellfun 时提供此函数的句柄。

创建一个名为 replace_nan 的函数,其中包含以下内容:

function x = replace_nan(x)
x(isnan(x)) = 0;
end

现在调用cellfun:

D = cellfun(@replace_nan, D, 'UniformOutput', false);

关于matlab - 在 MATLAB 中替换单元格的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34562452/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com