复数(Complex Numbers)

MATLAB 也支持复数的使用。复数由两部分组成:实部虚部,其形式为:

z=a+bi或z=a+bjz = a + bi \quad \text{或} \quad z = a + bj

其中 ij 表示虚数单位,它们等价于 −1\sqrt{-1}。无论使用 i 还是 j,MATLAB 都会自动将其识别为虚数单位。

注意:ij 是可以互换使用的,MATLAB 会统一将 j 显示为 i。如果你在表达式中混用了 ij,MATLAB 也会正确处理。


在 MATLAB 中声明复数

复数在 MATLAB 中的底层类型是 double,包含实部和虚部。声明复数时,可以使用 ij

>> compnum = 1 + i
compnum = 1.000 + 1.000i

>> compnum = 1 + j
compnum = 1.000 + 1.000i

注意事项:

  1. 使用 j 声明复数时,MATLAB 依然会显示为 i

  2. 不要将 ij 用作变量名,否则会导致混淆。

错误示例:

>> i = 1;  % 不推荐!
>> a = 1 + i
a = 2

推荐使用显式写法:

>> i = 3;
>> a = 1i + 1
a = 1.000 + 1.000i

为了避免混淆,即使需要在程序中使用 i 作为变量,声明复数时也推荐使用 1i 这种形式。


推荐方式:使用 complex 函数

>> complex(2, 6)
ans =
   2.0000 + 6.0000i

如果只需声明纯虚数,可以使用开平方负数:

>> sqrt(-49)
ans =
   0.0000 + 7.0000i

创建多个复数

可以通过两个向量分别表示实部和虚部,然后使用 complex 函数组合成复数向量:

>> RE = [1, 2, 3];  % 实部
>> IM = [4, 5, 6];  % 虚部
>> complex(RE, IM)

ans =
   1.0000 + 4.0000i   2.0000 + 5.0000i   3.0000 + 6.0000i

会生成复数的运算

某些运算天然会生成复数:

  • 偶次方根的负数结果:

>> (-1)^0.5
ans = 0.000 + 1.000i

>> (-3)^0.25
ans = 0.9306 + 0.9306i
  • 负数的对数:

>> log(-1)
ans = 0 + 3.1416i
  • 使用 roots 求解多项式根时,也常返回复数结果。


复数处理函数

判断实数或复数

使用 isreal 判断是否为实数(即虚部为 0):

>> A = [complex(2,3), complex(4,0)];

>> isreal(A)
ans = 
  logical
   0

>> isreal(A(2))
ans = 
  logical
   1

同一个数组中可以同时包含实数和复数,因为它们都是 double 类型。


提取实部和虚部

使用 realimag

>> real(A)
ans = 
     2     4

>> imag(A)
ans = 
     3     0

共轭复数(Complex Conjugate)

共轭复数 a+bia + bi 的共轭为 a−bia - bi,可使用 conj 函数:

>> conj(A)
ans = 
   2.0000 - 3.0000i   4.0000 + 0.0000i

相位角(Phase Angle)

使用 angle 函数获取复数的相位角(以弧度为单位):

>> angle(A)
ans =
    0.9828         0

参考资料:

[1]
https://web.archive.org/web/20211006102547/https://www.maths.unsw.edu.au/sites/default/files/MatlabSelfPaced/lesson1/MatlabLesson1_Complex.html

最后修改: 2025年04月15日 星期二 09:43