如何在八度音阶(或matlab)中比较两个结构的相等性?
尝试使用==运算符产生:
binary operator `==' not implemented for `scalar struct' by `scalar struct' operations
答案 0 :(得分:21)
使用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)
答案 1 :(得分:2)
我只想写一个函数isStructEqual(struct1,struct2)
,它对所有成员属性进行常规比较。如果任何此类比较返回'false'或'0',则立即退出并返回'false',否则如果它一直通过成员属性列表而不发生这种情况,则返回true。如果结构非常大,有一些方法可以自动迭代成员字段。
查看中央文件交换,您可以尝试this file。