在 MATLAB 中,我试图在元胞数组上执行一个函数,但运气不佳。我想创建一个 cellfun 来检查 str2double 是否返回 NaN 值,然后对不是 str2double 的值执行 NaNs 。我正在尝试使用带有 IF Else 语句的匿名函数,但实际上并没有得到任何结果。这是我到目前为止的想法:

x = cellfun(@(x)~isnan(str2double(x)),str2double(x))

但是它不起作用,有人可以帮助我吗?

最佳答案

您可以使用逻辑索引:

x = {'1', 'NaN', '2', 'NaN'}
y = str2double(x(~isnan(str2double(x))))

y =
     1     2

这会调用 str2double 两次,因此如果您必须执行一百万次,它的运行速度可能会有点慢。

编辑:正如丹指出的那样,如果你想改变单元格数组,请使用
x{~isnan(str2double(x))} = str2double(x(~isnan(str2double(x))))

关于Matlab匿名函数如果其他,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36867822/

10-11 00:53