在Octave(或Matlab)中,我该如何比较两个struct是否相等?
尝试使用==运算符会产生以下结果:
binary operator `==' not implemented for `scalar struct' by `scalar struct' operations
可以使用isequal
或者isequalwithequalnans
函数。 示例代码:
s1.field1 = [1 2 3];
s1.field2 = {2,3,4,{5,6}};
s2 = s1;
isequal(s1,s2) %Returns true (structures match)
s1.field3 = [1 2 nan];
s2.field3 = [1 2 nan];
isequal(s1, s2) %Returns false (NaN ~= NaN)
isequalwithequalnans(s1, s2) %Returns true (NaN == NaN)
s2.field2{end+1}=7;
isequal(s1,s2) %Returns false (different structures)
isequal(s1, 'Some string') %Returns false (different classes)
isStructEqual(struct1,struct2)
的函数,来对所有成员属性进行常规比较。如果任何一次比较返回'false'或'0',那么立即退出并返回'false',否则,如果成功遍历完所有成员属性而没有发生这种情况,则返回true。如果结构体非常大,则有自动迭代成员字段的方法。
isequaln
。 - b3.