MATLAB入门——矩阵和数组

MATLAB是“matrix laboratory”的缩写形式。MATLAB主要处理整个矩阵和数组,其他编程语言一般逐个处理数值。

所有MATLAB变量都是多维数组,与数据类型无关

数组创建

行向量的创建如下,各行元素用空格或逗号隔开。

A=[1 2 3 4]
A=[1,2,3,4]

创建多行数组,使用分号分隔各行 。

B=[1,2,3;3,3,2;1,1,2]

c=linspace(0,10,5)在0~10之间生成5个等间距的一维矩阵
c =

         0    2.5000    5.0000    7.5000   10.0000

e=eye(4);  4维单位矩阵
z=zeros(1,4); 1行4列全零矩阵
o=ones(4,1); 4行1列全一矩阵
r=rand(4); 4维0~1分布随机矩阵
rn=randn(4); 4维以0为均值的Gaussian分布随机矩阵 

D = diag(v) 返回包含主对角线上向量 v 的元素的对角矩阵。

D = diag(v,k) 将向量 v 的元素放置在第 k 条对角线上。k=0 表示主对角线,k>0 位于主对角线上方,k<0 位于主对角线下方。

a.*a为点乘运算,矩阵上每一个点进行平方运算
pinv_a=pinv(a) 求a的逆矩阵
[v,D]=eig(a); 输出v为特征向量,D为特征值对角阵
det(a) 求a的行列式
rank(a) 求a的秩
compan(b) 求伴随矩阵

数组运算

MATLAB允许使用单一运算符或函数来处理矩阵中的所有值

a+10

>> B+10

ans =

    11    12    13
    13    13    12
    11    11    12
 

sin(B)

>> sin(B)

ans =

    0.8415    0.9093    0.1411
    0.1411    0.1411    0.9093
    0.8415    0.8415    0.9093
 

可以通过单引号(')实现矩阵的转置

B'

>> B'

ans =

     1     3     1
     2     3     1
     3     2     2

使用*可以进行矩阵乘法,比如用矩阵乘他的逆矩阵得到单位矩阵

p=B*inv(B)

>> p=B*inv(B)

p =

    1.0000         0         0
   -0.0000    1.0000    0.0000
   -0.0000   -0.0000    1.0000

p不是整数值矩阵。MATLAB将数字存储为浮点型,算数运算可以区分实际值与其浮点表示之间的细微差别。可以通过使用format命令显示更多小数位数。

format long
p=B*inv(B)

>> format long
>> p=B*inv(B)

p =

   1.000000000000000                   0                   0
  -0.000000000000000   1.000000000000000   0.000000000000001
  -0.000000000000000  -0.000000000000000   1.000000000000000
 

也可以通过使用format将显示内容重置为更短格式,format仅影响数字显示,而不影响MATLAB对数字的计算或保存方式。

format short
p=B*inv(B)

>> format short
>> p=B*inv(B)

p =

    1.0000         0         0
   -0.0000    1.0000    0.0000
   -0.0000   -0.0000    1.0000
 

执行元素级乘法即点乘使用(.* )运算符

p=B.*B

>> p=B.*B

p =

     1     4     9
     9     9     4
     1     1     4

计算矩阵中元素的三次方

B3=B.^3


>> B3=B.^3

B3 =

     1     8    27
    27    27     8
     1     1     8
 

串联

串联是连接数组以形成更大数组的过程。

使用逗号将相邻的两个数组串联起来称为水平串联。每个数组需要有相同的行数。

A=[B,B]


>> A=[B,B]

A =

     1     2     3     1     2     3
     3     3     2     3     3     2
     1     1     2     1     1     2

使用分号将相邻的两个数组串联起来称为垂直串联。每个数组需要有相同的列数。

A=[B;B]

>> A=[B;B]

A =

     1     2     3
     3     3     2
     1     1     2
     1     2     3
     3     3     2
     1     1     2

复数

复数包括实部虚部,虚部单位是-1的平方根

sqrt(-1)


>> sqrt(-1)

ans =

   0.0000 + 1.0000i

要表示复数的虚部,使用i或j

S=[1+2i,3+8i;-j;6i]

>> S=[1+2i,3+8i;-j,6i]

S =

   1.0000 + 2.0000i   3.0000 + 8.0000i
   0.0000 - 1.0000i   0.0000 + 6.0000i

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值