Main Content

isreal

确定数组是否使用复数存储

说明

当数值数组 A 没有虚部时,tf = isreal(A) 返回逻辑值 1 (true),否则返回逻辑值 0 (false)。对于虚部为零的复数值,isreal 返回逻辑值 0 (false),因为该值仍然存储为复数。

示例

示例

全部折叠

定义一个 3×4 矩阵 A

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

确定数组是否为实数组。

tf = isreal(A)
tf = logical
   0

因为 A 包含复数元素,所以 isreal 返回 false。

使用 complex 函数创建一个具有零值虚部的标量 A

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

确定 A 是否为实数。

tf = isreal(A)
tf = logical
   0

A 不是实矩阵,因为它具有虚部,即使虚部的值为 0 也是如此。

确定 A 是否包含任何具有零值虚部的元素。

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

A 包含具有零值虚部的元素。

定义两个复数标量 xy

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

确定两个复数标量 xy 的和是否为实数。

A = x+y
A = 
8

MATLAB® 将丢弃零虚部。

isreal(A)
ans = logical
   1

A 是实矩阵,因为它不包含虚部。

创建一个元胞数组。

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]}
    {3x3 double        }
    {[5.0000 + 0.0000i]}

C 是一个 1×6 元胞数组。

遍历元胞数组中的元素以区分实数元素和复数元素。

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

x
x = 6x1 logical array

   1
   1
   0
   1
   1
   0

除了 C{3,1}C{6,1} 外,其他所有数组都为实数数组。

输入参数

全部折叠

输入数组,指定为标量、向量、矩阵或多维数组。

  • 对于数值数据类型,如果 A 没有虚部,则 isreal 返回 true;如果 A 有虚部,则 isreal 返回 false

  • 对于 durationcalendarDurationlogicalchar 数据类型,isreal 始终返回 true

  • 对于 stringtablecellstructdatetimefunction_handleobject 数据类型,isreal 始终返回 false

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | cell | datetime | duration | calendarDuration | function_handle
复数支持:

提示

  • 要检查数组 A 的每个元素是否为实数,请使用 A == real(A)

  • isreal(complex(A)) 始终返回 false,即使在虚部均为零时也是如此。

  • ~isreal(x) 检测数组是否具有虚部,即使虚部全部为零也会认为虚部存在。

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。

HDL 代码生成
使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 VHDL、Verilog 和 SystemVerilog 代码。

版本历史记录

在 R2006a 之前推出