Octave / MATLAB:如何比较结构的相等性?

时间:2012-03-31 00:10:26

标签: matlab octave

如何在八度音阶(或matlab)中比较两个结构的相等性?

尝试使用==运算符产生:

binary operator `==' not implemented for `scalar struct' by `scalar struct' operations

2 个答案:

答案 0 :(得分:21)

使用isequalisequalwithequalnans功能。示例代码:

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