为什么在八度中比较矩阵不被评估为布尔值?

时间:2018-11-11 19:50:08

标签: arrays matlab matrix octave

我是Octave的新手,可以在控制台上玩耍。

为什么在比较矩阵时,表达式的计算结果不是布尔值:

示例:

>> A=[1,2;3,4];     % creating 2x2 matrix
>> 5 == 5           % sample comparison returns true (1)
ans = 1

>> A(1,1) == A(1,1) % single element comparison returns true (1)
ans = 1

>> A == A           % returns 2x2 matrix ???
ans =

  1  1
  1  1

>> size(A == A)     % prove that the above returns 2x2 matrix
ans =

   2   2

2 个答案:

答案 0 :(得分:4)

==用于两个矩阵的逐元素比较。要检查两个矩阵是否相同,请使用isequal

答案 1 :(得分:0)

Sardar的答案是正确的,但是在计算时间方面,我认为我的替代答案更好:您还可以检查布尔矩阵A == A的所有元素均为1,即,矩阵A == A中的1等于A的元素数,即:

  
    

sum((A == A)(:))== numel(A)

         

ans = 1

  

其中的运算符(:)仅将矩阵A == A向量化,以便可以将其与sum()相加。当矩阵很大时,比较两个答案,例如通过定义A = rand(1e4),计算时间会大大不同...