Как сравнить ячейки или структуры matlab

Возможный дубликат:
Octave/MATLAB: как сравнить структуры для равенства?

есть ли простая функция сравнения для объектов 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
>>