这篇来讲一下Matlab
中矩阵和数组的应用,MATLAB
是matrix laboratory
的缩写形式。MATLAB®主要用于处理整个的矩阵和数组,这也是Matlab设计的初衷,只不过后面越更新功能越庞大。而,其他编程语言大多逐个处理数值。
所有MATLAB
变量都是多维数组,与数据类型无关。矩阵是指通常用来进行线性代数运算的二维数组。所以,在执行一些运算中,要牢记变量是数组的概念,除非你的变量只是一个单值。
文中代码出现的>>
均表示在命令行中输入命令,下方则表示命令行输出结果。
数组创建
首先,我们创建一个一行四列的数组,请使用逗号,
或空格分隔各个元素。这里多说一句,任何程序中的逗号均指的是英文格式的逗号。
>> a = [1 2 3 4]
a =
1 2 3 4
这种数组为行向量。
要创建多行多列的矩阵,请使用分号分隔各行,空格或逗号,
分隔每行的元素。
>> a = [1 3 5; 2 4 6; 7 8 10]
a =
1 3 5
2 4 6
7 8 10
创建矩阵的另一种方法是使用ones
、zeros
或rand
等函数。其中,ones
可以生成元素全是1
的矩阵,zeros
可以生成元素全是0
的矩阵,rand
生成元素是随机数的矩阵。此外,还有eye
函数可以生成单位矩阵。
创建一个由零组成的 5×1 列向量。
>> z = zeros(5,1)
z =
0
0
0
0
0
其他几个函数的用法一样,相关输入例子如下:
>> ones(2,3)
ans =
1 1 1
1 1 1
>> rand(2,3)
ans =
0.5524 0.4381 0.3824
0.8570 0.5005 0.4975
>> eye(2,3)
ans =
1 0 0
0 1 0
矩阵和数组运算
MATLAB
中,可以使用单一的算术运算符或函数来处理矩阵中的所有元素值。还记得刚才我们生成的a
矩阵吗,这里我们就用a
矩阵来进行一些简单的运算,相关代码如下:
a =
1 3 5
2 4 6
7 8 10
>> a+10
ans =
11 13 15
12 14 16
17 18 20
>> sin(a)
ans =
0.8415 0.1411 -0.9589
0.9093 -0.7568 -0.2794
0.6570 0.9894 -0.5440
Matlab中,矩阵进行转置变换,请使用单引号'
:
>> a'
ans =
1 2 7
3 4 8
5 6 10
Matlab中,可以使用*
运算符执行标准矩阵乘法,这将计算行与列之间的内积。例如,矩阵乘以其逆矩阵可返回单位矩阵:
>> p = a*inv(a)
p =
1.0000 0.0000 0
-0.0000 1.0000 0
0.0000 -0.0000 1.0000
这里需要注意的是,p
不是整数值矩阵。MATLAB
默认将数字存储为浮点值,算术运算可以区分实际值与其浮点表示之间的细微差别。使用format
命令可以显示更多小数位数:
>> format long
>> p = a*inv(a)
p =
0.999999999999997 0.000000000000003 0
-0.000000000000002 1.000000000000002 0
0.000000000000002 -0.000000000000009 1.000000000000000
使用以下命令将显示内容重置为更短格式
>> format short
format
仅影响数值的输出显示,而不影响MATLAB
对数字的计算或保存方式。
矩阵之间要执行元素级乘法(而非矩阵乘法),请使用.*
运算符:
>> p = a.*a
p =
1 9 25
4 16 36
49 64 100
乘法、除法和幂的矩阵运算符分别具有执行元素级运算的对应数组运算符。例如,计算a
的各个元素的三次方:
>> a.^3
ans =
1 27 125
8 64 216
343 512 1000
矩阵串联
矩阵串联是连接数组以便形成更大数组的过程。实际上,第一个数组是通过将其各个元素串联起来而构成的。成对的方括号[]
即为串联运算符。
>> A = [a,a]
A =
1 3 5 1 3 5
2 4 6 2 4 6
7 8 10 7 8 10
使用逗号将彼此相邻的数组串联起来称为水平串联。每个数组必须具有相同的行数。同样,如果各数组具有相同的列数,则可以使用分号垂直串联。
>> A = [a; a]
A =
1 3 5
2 4 6
7 8 10
1 3 5
2 4 6
7 8 10
串联之前,要判断矩阵之间的行号列号。其中,行数相同,才可以执行水平串联;列书相同,才可以执行垂直串联。
复数矩阵
复数包含实部和虚部,虚数单位是-1
的平方根。
>> sqrt(-1)
ans =
0.0000 + 1.0000i
要表示复数的虚部,请使用i
或j
。
>> c = [3+4i, 4+3j; -i, 10j]
c =
3.0000 + 4.0000i 4.0000 + 3.0000i
0.0000 - 1.0000i 0.0000 +10.0000i
转载文章,原文出处:MathWorks官网,由古哥整理发布
如若转载,请注明出处:https://iymark.com/articles/2824.html