当前位置:  开发笔记 > 编程语言 > 正文

在MATLAB中替换单元格的值

如何解决《在MATLAB中替换单元格的值》经验,为你挑选了1个好方法。

假设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);

有办法吗?



1> rayryeng - R..:

不要那么用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);


是的,我很好奇如何通过使用cellfun来完成它.我知道for循环已经有可能了.但是,我不知道我能在cellfun中使用补充功能.谢谢你的回答.
推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有