跳转到内容

MATLAB 编程/复数

来自维基教科书,自由的教学读物


复数 也在 MATLAB 中使用。
它由两部分组成,一部分是实数,另一部分是虚数。它具有 的形式。
i 或 j 返回基本虚数单位。i 或 j 等于 -1 的平方根,公式为 ( )。
注意:符号 i 和 j 可以互换,因为 MATLAB 只将 j 转换为 i,如果方程使用两种不同的表示法,如下所示。

在 MATLAB 中声明复数

[编辑 | 编辑源代码]

MATLAB 中的复数是具有实部和虚部的双精度数。虚部使用字符“i”或“j”声明。例如,要将变量声明为“1 + i”,只需键入以下内容:

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

>>%Note:If you use j MATLAB still displays i on the screen
 >> compnum = 1 + j
 compnum = 1.000 + 1.000i

注意 1:即使使用 j 来表示复数,MATLAB 仍然会在屏幕上显示 i

注意 2:由于 i 用作复数指示符,因此不建议将其用作变量,因为它会假设 i 是一个变量。

 >> i = 1; %bad practise to use i as variable
 >> a = 1 + i
 a = 2

但是,由于 MATLAB 通常不允许隐式乘法,因此仍然可以使用以下方式声明复数:

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

最好不要将 i 声明为变量,但是,如果已经有一个使用 i 作为变量的复杂程序,并且需要使用复数,这可能是解决它的最佳方法。

如果要对复数进行算术运算,请确保将整个数字放在括号中,否则可能不会得到预期的结果。

复数 函数

[编辑 | 编辑源代码]

但是,声明复数的最佳实践是使用函数 complex

>>%Best practise to declare complex number in MATLAB
>> complex(2,6)

ans =
   2.0000 + 6.0000i

如果要声明 虚数,只需使用负数的平方根,如下所示。

>> sqrt(-49)

ans =
   0.0000 + 7.0000i

要声明多个复数,请创建两个具有实数的行向量,以及另一个具有虚数的行向量。使用 complex 函数将它们组合起来

>> %create a vector consiots of real number
>> RE = [1,2,3]

RE =
     1     2     3

>> %create a vector consiots of imaginary number
>> IM = [4,5,6]

IM =
     4     5     6
>> %create 3 complex number 
>> complex(RE,IM)

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

创建复数的算术运算

[编辑 | 编辑源代码]

MATLAB 中有几种运算可以创建复数。其中之一是根据定义对负数求偶数根。

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

作为欧拉公式的结果,对负数求对数也会产生虚数答案。

>> log(-1)
ans = 0 + 3.1416i

此外,使用“roots”函数(针对多项式)或其他一些求根函数找到的函数的根通常会返回复数答案。

操作复数

[编辑 | 编辑源代码]

查找实数和虚数

[编辑 | 编辑源代码]

首先,在编程时,区分给定矩阵是实数还是复数很有帮助,因为某些运算只能对实数执行。

由于复数没有自己的类,因此 MATLAB 附带了另一个名为“isreal”的函数来确定给定 矩阵 是否为实数。如果任何输入为复数,它将返回 0。

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

A =
   2.0000 + 3.0000i   4.0000 + 0.0000i

>> %returns 1 if complex number does not have an imaginary part and 0 if otherwise.
>> %A denotes the whole vectors
>> isreal(A)

ans =
  logical
   0
>> %A(2) denotes second complex number in the vector (4+0i)
>> isreal(A(2))

ans =
  logical
   1

请注意,由于两者都是 double 类,因此 可以 在同一个数组中包含实数和复数。
该函数的设置方式使您可以将其用作条件的一部分,以便只有当数组 A 的所有元素都是实数时才执行一个块。

要仅提取复数变量的实部,请使用 real 函数。要仅提取虚部,请使用 imag 函数。

>>%Extract real number from the complex number vector A
>> real(A)

ans =
     2     4

>>%Extract imaginary number from the complex number vector A
>> imag(A)

ans =
     3     0

复共轭

[编辑 | 编辑源代码]
复共轭图片

要找到复共轭,可以使用conj函数。如果复数Z是,那么共轭Ẑ是

>> conj(A)

ans =
   2.0000 - 3.0000i   4.0000 + 0.0000i

相位角

[编辑 | 编辑源代码]

要找到相位角,可以使用复数每个元素的弧度表示的相位角。

>> angle(A)

ans =
    0.9828         0

参考资料

[编辑 | 编辑源代码]

[1]

  1. https://web.archive.org/web/20211006102547/https://www.maths.unsw.edu.au/sites/default/files/MatlabSelfPaced/lesson1/MatlabLesson1_Complex.html
华夏公益教科书