REW

What Is Isequal?

Published Aug 29, 2025 4 min read
On this page

isequal is a programming construct, typically a function or method, used to perform a robust comparison of two or more data structures to determine if they are equivalent. The core purpose of isequal is to check for a deep equality of content, size, and data type, distinguishing it from simple comparison operators like ==. While the exact behavior can vary between programming languages and libraries, the general principle is to provide a reliable "all-or-nothing" check for equality.

Core differences from the == operator

Feature isequal == (for arrays/objects)
Comparison scope Compares entire data structures, like matrices, objects, and cell arrays. In many languages, performs an element-wise or property-by-property comparison.
Output Returns a single logical scalar (true or false) indicating if the entire comparison holds. Returns a logical array or matrix of the same size as the inputs, indicating which individual elements are equal.
Object comparison Compares the values of object properties, not just whether two variables point to the same object in memory. For handle objects, compares if the variables refer to the exact same object in memory.
Non-numeric values Behavior depends on the specific function. Some versions do not consider special values like NaN as equal, while others (isequaln in MATLAB) do. Can behave inconsistently or raise errors when comparing special values.
Type sensitivity In some contexts, returns false if the data types of two inputs differ, even if the values are the same. May perform implicit type conversion, which can sometimes lead to unexpected results.

In-depth explanation by language

MATLAB

In MATLAB, isequal is a built-in function for comparing arrays, structures, cell arrays, and objects.

  • Syntax:tf = isequal(A, B, ...)

  • Recursive comparison: It recursively compares the contents of complex data structures like cell arrays and structures.

  • NaN values:isequal considers NaN (Not a Number) values to be unequal, a standard behavior based on the IEEE 754 floating-point specification. A related function, isequaln, can be used if you need NaN values to be treated as equal.

  • Object comparison: For objects, it compares the values of their stored properties. For handle objects, this provides a "deep" content comparison, whereas == only checks if the variables point to the same instance.

  • **Example:**matlab

    A = [1 2 3];
    B = [1 2 3];
    C = [1 2 4];
    D = [1 2 NaN];
    E = [1 2 NaN];
    isequal(A, B) % ans = logical 1 (true)
    isequal(A, C) % ans = logical 0 (false)
    isequal(D, E) % ans = logical 0 (false), because NaN ~= NaN
    

    Use code with caution.

Python (with NumPy)

While Python does not have a native isequal function, the popular NumPy library provides numpy.array_equal for a similar purpose.

  • Syntax:numpy.array_equal(a1, a2, equal_nan=False)

  • Comparison: Checks if two NumPy arrays have the same shape and elements.

  • NaN handling: The equal_nan parameter offers explicit control over how NaN values are handled.

  • **Example:**python

    import numpy as np
    A = np.array([1, 2, 3])
    B = np.array([1, 2, 3])
    C = np.array([1, 2, 4])
    D = np.array([1, 2, np.nan])
    E = np.array([1, 2, np.nan])
    np.array_equal(A, B) # True
    np.array_equal(A, C) # False
    np.array_equal(D, E) # False (by default)
    np.array_equal(D, E, equal_nan=True) # True
    

    Use code with caution.

JavaScript (with Lodash)

In JavaScript, the Lodash library provides an _.isEqual() method for deep comparison.

  • Syntax:_.isEqual(value, other)

  • Features: It can compare arrays, objects, maps, sets, dates, and regular expressions, performing a deep, recursive check for equivalence.

  • **Example:**javascript

    const _ = require('lodash');
    const object1 = { a: 1, b: 2 };
    const object2 = { a: 1, b: 2 };
    const object3 = { a: 1, b: 3 };
    _.isEqual(object1, object2); // true
    _.isEqual(object1, object3); // false
    _.isEqual([1, 2, 3], [1, 2, 3]); // true
    

    Use code with caution.

Practical applications

  • Unit testing:isequal is crucial for writing robust unit tests where you need to assert that two complex data structures, such as a calculated matrix and a reference matrix, are identical.
  • Data validation: When comparing data from different sources or after a transformation, isequal can verify that the final output is a perfect match.
  • Caching: When storing computational results, isequal can be used to check if new inputs are identical to previously processed ones, allowing for the reuse of cached results.
  • Object-oriented programming: In object-oriented languages, implementing an isequal method (often part of a broader equality protocol) is vital for ensuring that object comparisons behave as expected for "value types"—objects whose equality is defined by their contents, not their identity.
Enjoyed this article? Share it with a friend.