MATLAB: isequal 结合表格

MATLAB: isequal in conjunction with tables

我正在尝试确定两个表的相等性。通常,isequal 应该与表格一起使用。但是,当要比较的表之一是单元格的内容时,我会收到意外结果。看看这个:

a{1} = table(1,2,3);
b = a{1};

isequal(a,b)

为什么结果是false?我希望表格是相等的(结果 true)。

简答

单元格与其内容不同。尝试

isequal(a{1},b)

长答案

澄清一下:

  • a 是一个 1×1 元胞数组
  • a(1) 是它的第一个单元格。在这种情况下,这与 a 相同,因为 a 是 1×1。
  • a{1}是第一个单元格的内容,即一个table.

所以isequal(a{1},b)给出true,因为它比较了两个table,而那些table确实是相等的。

另一方面,isequal(a,b) 给出 false,因为 a 是一个包含 table 的单元格,而 b 是一个 table。

另请注意

isequal(a,{b})

会给出 true,因为 a 是一个包含 table b 的 1×1 元胞数组,而 {b} 是 table 打包成1×1的元胞元胞数组,所以是一样的