Main Content

isreal

Determine whether array uses complex storage

Description

tf = isreal(A) returns logical 1 (true) when numeric array A does not have an imaginary part, and logical 0 (false) otherwise. isreal returns logical 0 (false) for complex values that have zero imaginary part, since the value is still stored as a complex number.

example

Examples

collapse all

Define a 3-by-4 matrix, A.

A = [7 3+4i 2 5i;...
     2i 1+3i 12 345;...
     52 108 78 3];

Determine whether the array is real.

tf = isreal(A)
tf = logical
   0

Since A contains complex elements, isreal returns false.

Use the complex function to create a scalar, A, with zero-valued imaginary part.

A = complex(12)
A = 
12.0000 + 0.0000i

Determine whether A is real.

tf = isreal(A)
tf = logical
   0

A is not real because it has an imaginary part, even though the value of the imaginary part is 0.

Determine whether A contains any elements with zero-valued imaginary part.

~any(imag(A))
ans = logical
   1

A contains elements with zero-valued imaginary part.

Define two complex scalars, x and y.

x=3+4i;
y=5-4i;

Determine whether the addition of two complex scalars, x and y, is real.

A = x+y
A = 
8

MATLAB® drops the zero imaginary part.

isreal(A)
ans = logical
   1

A is real since it does not have an imaginary part.

Create a cell array.

C{1,1} = pi;                 % double
C{2,1} = 'John Doe';         % char array
C{3,1} = 2 + 4i;             % complex double
C{4,1} = ispc;               % logical
C{5,1} = magic(3);           % double array
C{6,1} = complex(5,0)        % complex double
C=6×1 cell array
    {[          3.1416]}
    {'John Doe'        }
    {[2.0000 + 4.0000i]}
    {[               0]}
    {3×3 double        }
    {[5.0000 + 0.0000i]}

C is a 1-by-6 cell array.

Loop over the elements of a cell array to distinguish between real and complex elements.

for k = 1:6
x(k,1) = isreal(C{k,1});
end

x
x = 6×1 logical array

   1
   1
   0
   1
   1
   0

All but C{3,1} and C{6,1} are real arrays.

Input Arguments

collapse all

Input array, specified as a scalar, vector, matrix, or multidimensional array.

  • For numeric data types, if A does not have an imaginary part, isreal returns true; if A does have an imaginary part isreal returns false.

  • For duration, calendarDuration, logical, and char data types, isreal always returns true.

  • For string, table, cell, struct, datetime, function_handle, and object data types, isreal always returns false.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | cell | datetime | duration | calendarDuration | function_handle
Complex Number Support: Yes

Tips

  • To check whether each element of an array A is real, use A == real(A).

  • isreal(complex(A)) always returns false, even when the imaginary part is all zeros.

  • ~isreal(x) detects arrays that have an imaginary part, even if it is all zeros.

Extended Capabilities

expand all

HDL Code Generation
Generate VHDL, Verilog and SystemVerilog code for FPGA and ASIC designs using HDL Coder™.

Version History

Introduced before R2006a