如何比较两个矩阵?

时间:2016-08-22 08:07:23

标签: matlab matrix

我的目标是在两个不同的文件中比较两个矩阵:AB

 function [Result]=test()
     A_Mat= load('fileA', 'A')
     B_Mat= load('fileB', 'B')
     Result= A_Mat == B_Mat
  end

我想要的结果是一个矩阵,其中包含AB之间的差异。

我遇到的错误是:

error: binary operator '==' not implemented for 'scalar struct' by 'scalar struct' operations 

4 个答案:

答案 0 :(得分:6)

load function doesn't return what you think it returns.阅读广泛且易于理解的MATLAB文档总是有帮助的。

function Result=test()
  load('fileA', 'A');
  load('fileB', 'B');
  Result = A == B
end

答案 1 :(得分:4)

使用isequal功能。

isequal(A,B)

答案 2 :(得分:0)

首先,运算符==确实对矩阵起作用,它返回一个真/假(1/0)的逻辑矩阵,其中相应的项分别相等或不同。从你得到的错误来看,你似乎没有从文件中读取矩阵,但是结构,而且==确实不适用于结构。

您可以对结构和矩阵使用isequal。此函数仅返回一个值 - 1或0(真/假)。

<强> ADDED

看到@dasdingonesin回答后,谁真正指出了确切的问题,我只想在你写的时候添加

A_Mat= load('fileA', 'A')

它返回与字段A一样的结构。

所以:

A_Mat = s.A

答案 3 :(得分:0)

如果您只想要AB之间的区别,则应首先使用load作为dasdingonesin建议,并检查与{{1}完全矩阵相等}或与isequal的元素相等。然而,差异仅由==给出:

-

请注意isequal(A,B); % returns a boolean for full matrix equality A==B; % returns a logical matrix with element wise equality A-B; % returns a matrix with differences between the two matrices 可以处理大小不等的矩阵(它只会返回isequal),而0==都会因错误{{}而崩溃1}}。