在 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/