检查单元格是否相等

Check cells for equality

我正在寻找一种优雅的方法来使用 equaln 来确定元胞数组中的元胞是否完全相等。这是一个玩具示例:

cellarray{1,1,1} = [true, true, true];
cellarray{1,1,2} = [true, true, true];
cellarray{1,1,3} = [true, true, true];

cellarray{1,2,1} = [true, false, false];
cellarray{1,2,2} = [true, true, false];
cellarray{1,2,3} = [false, false, false];

我想检查单元格cellarray{1,1,:}中的内容是否可以被认为是相等的。实际上,这个矩阵第三维的大小是1000。

c = cellarray(1,1,:);
allTheSameValues = (nnz(bsxfun(@minus, cell2mat(c), cell2mat(c(1)))) == 0)

一次调用 isequal, passing a comma-separated list 个要测试的参数,应该就是您所需要的:

>> isequal(cellarray{1,1,:})

ans =

  logical

   1

>> isequal(cellarray{1,2,:})

ans =

  logical

   0

如果您想将 NaN 值视为相等(默认情况下它们不相等),则只需使用 isequaln 即可。