复数是指既包含实部又包含虚部的数,虚部的单位是 -1 的开平方根,在 MATLAB 中用字母 i 或 j 中的一个表示,i 和 j 的作用是完全一样的。
复数出现在许多科研工作问题上,例如,在电力工程中,可以用复数代表交变电压、交变电流和阻抗。描述电气系统行为的公式经常用到复数。
作为一个工程师,如果没有很好地理解和运用复数,将无法工作。复数的一般形式如下:
其中 C 为复数,a 和 b 均为实数,i 代表 -1 的开平方根。a、b 分别为 C 的实部和虚部。
由于复数有两个部分,所以它能在平面内标出。这个平面的横轴是实轴,纵轴是虚轴,所以复数在这个平面内为一个点,横轴为 a,纵轴为 b。用上面的方式表示一个复数,称为直角坐标表示,坐标的横轴与纵轴分别代表复数的实部与虚部。
若复数在一个平面内,则有另一种表达方式,即极坐标表示,公式如下:
其中 z 代表向量的模,θ 代表辐角。直角坐标中的 a、b 和极坐标 z、θ 之间的关系为:
在 MATLAB 中创建复数有两种方法:直接生成或者使用 complex() 函数生成。
1) 直接生成,请看下面的代码:
所谓直接生成,也就是将复数直接写出来。
2) 使用 complex() 函数生成,请看下面的代码:
>> x=2
>> y=4
>> z=complex(x, y)
z =
2.0000 + 4.0000i
其中 x、y 为实数,得到的 z 是以 x 为实部,y 为虚部的复数。
也可以这样使用 complex() 函数,具体代码如下:
>> x=2
>> z=complex(x)
z =
2.0000 + 0.0000i
其中 x 为实数,得到的 z 是以 x 为实部,以 0 为虚部的复数。
再来看一个更加复杂的例子:
上例中应用 rand(3) 函数生成 3×3 的随机数矩阵。
通过 real() 和 imag() 函数可以把复数分为实数和虚数部分,此处不再举例,有兴趣的读者请自行测试。
下表为常见的支持复数运算的 MATLAB 函数。
函数名 | 描述 |
---|---|
conj(c) | 计算 c 的共轭复数,如果 c=a+bi,那么 conj(c)=a-bi |
real(c) | 返回复数 c 的实部 |
inag(c) | 返回复数 c 的虚部 |
isreal(c) | 如果数组 c 中没有一个元素有虚部,函数 isreal(c) 将返回 1;所以如果一个数组 c 是 复数组成,那么 isreal(c) 将返回 0 |
abs(c) | 返回复数 c 的模 |
angle(c) | 返回复数 c 的幅角 |
在本节的最后,将上面介绍过的数据类型汇总成表,如下表所示,给出适合 MATLAB 支持的数据类型函数。
函数名 | 描述 |
---|---|
double | 创建或转化为双精度数据类型 |
single | 创建或转化为单精度数据类型 |
int8,int16,int32,int64 | 创建或转化为有符号整数数据类型 |
uint8,uint16,uint32,uint64 | 创建或转化为无符号整数数据类型 |
isnumeric | 若是整数或浮点数据类型,返回 true |
isinteger | 若是整数数据类型,返回 true |
isfloat | 若是单精度或双精度数据类型,返回 true |
isa(x,'type') | type 包括 numeric、integer 和 float,当 x 类型为 type 时,返回 true |
case(x,'type') | 将 x 类型置为 type |
intmax('type') | type 数据类型的最大整数值 |
intmin('type') | type 数据类型的最小整数值 |
realmax('type') | type 数据类型的最大浮点实数值 |
realmin('type') | type 数据类型的最小浮点实数值 |
eps('type') | type 数据类型的 eps 值(浮点值) |
eps(x) | x 的 eps 值,即 x 与 MATLAB 能表示的和其相邻的同数据类型的那个数之间的距离 |
zeros(...,'type') | 创建数据类型为 type 的全 0 阵列 |
ones(...,'type') | 创建数据类型为 type 的全 1 阵列 |
eye(...,'type') | 创建数据类型为 type 的单位阵列 |