• MATLAB复数类型

    复数是指既包含实部又包含虚部的数,虚部的单位是 -1 的开平方根,在 MATLAB 中用字母 i 或 j 中的一个表示,i 和 j 的作用是完全一样的。

    复数出现在许多科研工作问题上,例如,在电力工程中,可以用复数代表交变电压、交变电流和阻抗。描述电气系统行为的公式经常用到复数。

    作为一个工程师,如果没有很好地理解和运用复数,将无法工作。复数的一般形式如下:

    C = a + bi

    其中 C 为复数,a 和 b 均为实数,i 代表 -1 的开平方根。a、b 分别为 C 的实部和虚部。

    由于复数有两个部分,所以它能在平面内标出。这个平面的横轴是实轴,纵轴是虚轴,所以复数在这个平面内为一个点,横轴为 a,纵轴为 b。用上面的方式表示一个复数,称为直角坐标表示,坐标的横轴与纵轴分别代表复数的实部与虚部。

    若复数在一个平面内,则有另一种表达方式,即极坐标表示,公式如下:

    c = a + bi = z∠θ

    其中 z 代表向量的模,θ 代表辐角。直角坐标中的 a、b 和极坐标 z、θ 之间的关系为:

    a = z cosθ
    b = z sinθ
    z = ( a2+b2) 1/2
    θ = tan-1 (b/a)

    创建复数

    在 MATLAB 中创建复数有两种方法:直接生成或者使用 complex() 函数生成。

    1) 直接生成,请看下面的代码:

    >> x = 2 + 3i
    x = 
        2.0000 + 3.0000i

    所谓直接生成,也就是将复数直接写出来。

    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 为虚部的复数。

    再来看一个更加复杂的例子:

    >> x = rand(3) * 5;
    >> y= rand(3) * -8;
    >> z = complex(x,y)
    z = 
        4.0736 - 7.7191i  4.5669 - 7.6573i  1.3925 - 1.1351i
        4.5290 - 1.2609i  3.1618 - 3.8830i  2.7344 - 3.3741i
        0.6349 - 7.7647i  0.4877 - 6.4022i  4.7875 - 7.3259i

    上例中应用 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 的单位阵列

更多...

加载中...