我的目标是在两个不同的文件中比较两个矩阵:A
和B
:
function [Result]=test()
A_Mat= load('fileA', 'A')
B_Mat= load('fileB', 'B')
Result= A_Mat == B_Mat
end
我想要的结果是一个矩阵,其中包含A
和B
之间的差异。
我遇到的错误是:
error: binary operator '==' not implemented for 'scalar struct' by 'scalar struct' operations
答案 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)
如果您只想要A
和B
之间的区别,则应首先使用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}}。