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