Octave/MATLAB: How to compare structs for equality?

前端 未结 2 1372
猫巷女王i
猫巷女王i 2020-12-10 11:22

How do I compare two structs for equality in octave (or matlab)?

Attempting to use the == operator yields:

binary operator `==\' not implemented for          


        
2条回答
  •  佛祖请我去吃肉
    2020-12-10 11:52

    Use either the isequal or isequalwithequalnans function. Example code:

    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)
    

提交回复
热议问题