如何确定所有单元格数组元素是否为非零或真?或者:“all”的单元格数组是什么?

时间:2013-10-14 09:58:42

标签: matlab cell-array

我正在寻找一种快速的方法来评估单元格数组的任何元素是否包含逻辑值false。对于矩阵数组,有一个方便的函数all,它不适用于单元格。 我很难在不使用循环的情况下为单元阵列实现相同的功能,这个解决方案可行,但不应该是一个选项。任何提示?

我的单元格数组看起来像这样:

values = {  vector of values  ;  value  ; ...  ;  false  ;  ... ; value }

所以我基本上是在单元格数组中写入进程的结果,如果进程中有错误则返回逻辑false。在下面我需要实现错误处理,以防写入false

时出错

我真的很感激像:

if ~all(values), do something to handle error; return; end

但对于细胞阵列......

编辑:如果一个单元格元素是值为0的double,则它是一个有效的大小写,它不应该返回false

2 个答案:

答案 0 :(得分:3)

检查它是否为logical,然后检查它是否为false

cellfun(@(x) islogical(x) && ~x, values)

如果你有false,那么你需要

    if any(cellfun(@(x) islogical(x) && ~x, values))
         %do something to handle error; 
         return; 
    end

答案 1 :(得分:0)

cellfun会有效吗?

e.g。

booltest = all((cellfun(@(x) all(x), values))