есть ли простая функция сравнения для объектов matlab или структурных объектов?
использование '==', похоже, не работает: (
Ответ 1
Если вы хотите знать, являются ли ровные два массива ячеек или структурных объектов, вы всегда можете использовать isequaln.
Ответ 2
Используйте isequal для сравнения двух ячеек. Обратите внимание, однако, что == не рекомендуется даже для массивов:
>> A = [1 2 3 4 5];
>> B = [1 2 3 4 5];
>> A == B
ans =
1 1 1 1 1
Вам понадобится использовать следующий трюк, чтобы использовать это выражение в выражении if, например.
Причина == не рекомендуется для переменных типа double из-за использования представления IEEE 754 MATLAB. Например:
>> .1 + .1 + .1 == .3
ans =
0
Чтобы сравнить двойные значения более надежно, вы можете использовать функцию abs в MATLAB:
>> if ( abs( (.1+.1+.1) - .3 ) < 1e-10 ); disp('Values are pretty close although not necessarily bit equal'); end
Values are pretty close although not necessarily bit equal
>>