isequal

Определите равенство массива

Описание

пример

tf = isequal(A,B) возвращает логический 1 (true), если A и B являются эквивалентными; в противном случае возвращается логический 0 (false). Смотрите в разделе Входных параметров определения эквивалентности для каждого типа данных. NaN (Не число), NaT (Не Время), неопределенные категориальные элементы и <missing> значения считаются неравными другим элементам, а также самим себе.

Лечить NaN, NaT, <undefined>, и <missing> значения как равные другим таким значениям, использование isequaln.

пример

tf = isequal(A1,A2,...,An) возвращает логический 1 (true), если все входы эквивалентны.

Примеры

свернуть все

Создайте две числовые матрицы и сравните их для равенства.

A = zeros(3,3)+1e-20;
B = zeros(3,3);
tf = isequal(A,B)
tf = logical
   0

Функция возвращает логическую 0 (false), потому что матрицы отличаются очень малой суммой и не совсем равны.

Создайте две структуры и задайте поля в другом порядке.

A = struct('field1',0.005,'field2',2500);
B = struct('field2',2500,'field1',0.005);

Сравните структуры для равенства.

tf = isequal(A,B)
tf = logical
   1

Несмотря на то, что упорядоченное расположение полей в каждой структуре различно, isequal рассматривает их как то же самое, потому что значения равны.

Сравните логическое значение true к двойному целому числу 1.

isequal(true,1)
ans = logical
   1

Заметьте, что isequal не учитывает тип данных, когда он проверяет на равенство.

Аналогично сравните 'A' в целое число, эквивалентное ASCII, 65.

isequal('A',65)
ans = logical
   1

Результат логичен 1 (true) с double('A') равен 65.

Создайте три вектора, содержащие значения NaN.

A1 = [1 NaN NaN];
A2 = [1 NaN NaN];
A3 = [1 NaN NaN];

Сравните векторы для равенства.

tf = isequal(A1,A2,A3)
tf = logical
   0

Результат логичен 0 (false) потому что isequal не рассматривает значения NaN как равные друг другу.

Определите, будет ли полночь 13 января 2013 года в Анкоридже, Аляска равна 11 часам утра в ту же дату в Каире.

t1 = datetime(2013,1,13,0,0,0,'TimeZone','America/Anchorage');
t2 = datetime(2013,1,13,11,0,0,'TimeZone','Africa/Cairo');
tf = isequal(t1,t2)
tf = logical
   1

Добавьте 8 месяцев к дате и сравните значения datetime для равенства.

t1 = datetime(2013,9,13,0,0,0,'TimeZone','America/Anchorage');
t2 = datetime(2013,9,13,11,0,0,'TimeZone','Africa/Cairo');
tf = isequal(t1,t2)
tf = logical
   0

Значения datetime больше не равны, так как Каир не наблюдает дневного сохранения времени.

Несмотря на то, что размеры и типы данных различаются, isequal возвращает логический 1 (true) при сравнении вектора символов и строкового скаляра, которые содержат одну и ту же последовательность символов.

isequal("foo",'foo')
ans = logical
   1

Входные параметры

свернуть все

Сравниваемые входы, заданные как массивы.

В некоторых случаях типы входов не должны совпадать:

  • Числовые входы эквивалентны, если они имеют одинаковый размер и их содержимое имеет равное значение. Тест сравнивает обе действительные и мнимые части числовых массивов.

  • Таблицы, расписания, структуры и массивы ячеек эквивалентны только тогда, когда все элементы и свойства равны.

  • Строковые скаляры и векторы символов, содержащие одну и ту же последовательность символов, эквивалентны.

Некоторые сравнения типов данных имеют особые факторы, связанные с метаданными. Если входы все:

  • Структуры - Поля не должны быть в том же порядке, пока содержимое равно.

  • Порядковые категориальные массивы - Должны иметь одинаковые наборы категорий, включая их порядок.

  • Категориальные массивы, которые не являются порядковыми - Могут иметь различные наборы категорий, и isequal сравнивает имена категорий каждой пары элементов.

  • Массивы Datetime - isequal игнорирует формат отображения при сравнении точек во времени. Если все массивы связаны с часовыми поясами, то isequal сравнивает моменты времени, а не часы (для примера, 01-May-2018 09:00:00 EDT это то же самое время, что и 01-May-2018 06:00:00 PDT, так isequal возвращает true несмотря на то, что часы 9:00 и 6:00 отличаются).

  • Объекты - isequal возвращает логический 1 (true) для объектов того же класса с равными значениями свойств.

Последовательность входов для сравнения, заданная как массивы.

В некоторых случаях типы входов не должны совпадать:

  • Числовые входы эквивалентны, если они имеют одинаковый размер и их содержимое имеет равное значение. Тест сравнивает обе действительные и мнимые части числовых массивов.

  • Таблицы, расписания, структуры и массивы ячеек эквивалентны только тогда, когда все элементы и свойства равны.

  • Строковые скаляры и векторы символов, содержащие одну и ту же последовательность символов, эквивалентны.

Некоторые сравнения типов данных имеют особые факторы, связанные с метаданными. Если входы все:

  • Структуры - Поля не должны быть в том же порядке, пока содержимое равно.

  • Порядковые категориальные массивы - Должны иметь одинаковые наборы категорий, включая их порядок.

  • Категориальные массивы, которые не являются порядковыми - Могут иметь различные наборы категорий, и isequal сравнивает имена категорий каждой пары элементов.

  • Массивы Datetime - isequal игнорирует формат отображения при сравнении точек во времени. Если все массивы связаны с часовыми поясами, то isequal сравнивает моменты времени, а не часы (для примера, 01-May-2018 09:00:00 EDT это то же самое время, что и 01-May-2018 06:00:00 PDT, так isequal возвращает true несмотря на то, что часы 9:00 и 6:00 отличаются).

  • Объекты - isequal возвращает логический 1 (true) для объектов того же класса с равными значениями свойств.

Совет

  • Равенство двух указателей на функцию зависит от того, как они построены. Для получения дополнительной информации см. «Сравнение указателей на функции».

  • isequal возвращает логический 0 (false) для двух объектов с динамическими свойствами, даже если свойства имеют одинаковые имена и значения.

  • isequal сравнивает только сохраненные (не зависимые) свойства при тестировании двух объектов на равенство.

  • При сравнении двух указателей объектов используйте == чтобы проверить, имеют ли объекты тот же указатель. Использовать isequal чтобы определить, имеют ли два объекта с различными указателями равные значения свойств.

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.

Генерация кода GPU
Сгенерируйте код CUDA ® для графических процессоров NVIDIA ® с помощью GPU Coder™

.
Представлено до R2006a