Main Content

isequal

Test equality of symbolic inputs

Description

example

isequal(a,b) returns logical 1 (true) if a and b are the same size and their contents are of equal value. Otherwise, isequal returns logical 0 (false). isequal does not consider NaN (not a number) values equal. isequal recursively compares the contents of symbolic data structures and the properties of objects. If all contents in the respective locations are equal, isequal returns logical 1 (true).

example

isequal(a1,a2,...,aN) returns logical 1 (true) if all the inputs a1,a2,...,aN are equal.

Examples

Test Numbers for Equality

Test numeric or symbolic inputs for equality using isequal. If you compare numeric inputs against symbolic inputs, isequal returns 0 (false) because double and symbolic are distinct data types.

Test if 2 and 5 are equal. Because you are comparing doubles, the MATLAB® isequal function is called. isequal returns 0 (false) as expected.

isequal(2,5)
ans =
  logical
   0

Test if the solution of the equation cos(x) == -1 is pi. The isequal function returns 1 (true) meaning the solution is equal to pi.

syms x
sol = solve(cos(x) == -1, x);
isequal(sol,sym(pi))
ans =
  logical
   1

Compare the double and symbolic representations of 1. isequal returns 0 (false) because double and symbolic are distinct data types. To return 1 (true) in this case, use logical instead.

usingIsEqual = isequal(pi,sym(pi))
usingLogical = logical(pi == sym(pi))
usingIsEqual =
  logical
   0
usingLogical =
  logical
   1

Test Symbolic Expressions for Equality

Test if the expressions tan(x) and sin(x)/cos(x) are syntactically the same. The isequal function returns 0 (false) since the expressions are different and isequal does not do a mathematical comparison between the expressions.

syms x
isequal(tan(x),sin(x)/cos(x))
ans =
  logical
   0

Rewrite the expression tan(x) in terms of sin(x) and cos(x). Test if rewrite correctly rewrites tan(x) as sin(x)/cos(x). The isequal function returns 1 (true) meaning the rewritten result equals the test expression.

f = rewrite(tan(x),'sincos');
testf = sin(x)/cos(x);
isequal(f,testf)
ans =
  logical
   1

To check whether the mathematical comparison tan(x) == sin(x)/cos(x) holds for all values of x, use isAlways.

isAlways(tan(x) == sin(x)/cos(x))
ans =
  logical
   1

Test Symbolic Vectors and Matrices for Equality

Test vectors and matrices for equality using isequal.

Test if solutions of the quadratic equation found by solve are equal to the expected solutions. isequal function returns 1 (true) meaning the inputs are equal.

syms a b c x
eqn = a*x^2 + b*x + c;
Sol = solve(eqn, x);
testSol = [-(b+(b^2-4*a*c)^(1/2))/(2*a); -(b-(b^2-4*a*c)^(1/2))/(2*a)];
isequal(Sol,testSol)
ans =
  logical
   1

The Hilbert matrix is a special matrix that is difficult to invert accurately. If the inverse is accurately computed, then multiplying the inverse by the original Hilbert matrix returns the identity matrix.

Use this condition to symbolically test if the inverse of hilb(20) is correctly calculated. isequal returns 1 (true) meaning that the product of the inverse and the original Hilbert matrix is equal to the identity matrix.

H = sym(hilb(20));
prod = H*inv(H);
eye20 = sym(eye(20));
isequal(prod,eye20)
ans =
  logical
   1

Compare Inputs Containing NaN

Compare three vectors containing NaN (not a number). isequal returns logical 0 (false) because isequal does not treat NaN values as equal to each other.

syms x
A1 = [x NaN NaN];
A2 = [x NaN NaN];
A3 = [x NaN NaN];
isequal(A1, A2, A3)
ans =
  logical
   0

Input Arguments

collapse all

Input, specified as numbers, vectors, matrices, or arrays, or symbolic numbers, scalar variables, matrix variables (since R2021a), arrays, functions, or expressions.

Input, specified as numbers, vectors, matrices, or arrays, or symbolic numbers, scalar variables, matrix variables (since R2021a), arrays, functions, or expressions.

Tips

  • When your inputs are not symbolic objects, the MATLAB isequal function is called. If one of the arguments is symbolic, then all other arguments are converted to symbolic objects before comparison, and the symbolic isequal function is called.

  • isequal(a,b) checks if a and b are the same size and their contents are syntactically the same expression. To check whether the mathematical comparison a == b holds for all values of variables in a and b, use isAlways(a == b).

Introduced before R2006a