matlab02
矩阵和数列
MATLAB 的全称是矩阵实验室。所以这个算是matlab的主要功能之一了。
数列其实是只有一行的矩阵,而在matlab中所有的变量其实都是以矩阵的方式存在的。
新建数列
空格和’,’放在中括号里就可以新建数列,甚至可以混用,但是不建议这么写。
1 | [1,2 3] |
Output:1
2
3ans =
1 2 3
这里的ans是matlab未命名结果变量时存储结果的地方,matlab作为一个计算机而非正式的编程语言,尽可能的方便用户使用而减少报错机会。除了数学原因很少报错。所以它是比其他程序设计语言好学不少的(除了python)
新建矩阵
新建矩阵,即多行数列有三种主流方式,换行和用;
和用函数。1
2
3a = [1 3 5
2 4 6
7 8 10]
和1
a = [1 3 5; 2 4 6; 7 8 10]
Output相同,为:1
2
3
4
5a =
1 3 5
2 4 6
7 8 10
也可以用函数快捷新建特定矩阵1
zero(n,m) %新建一个n*m的零矩阵
如:1
z = zeros(5,1)
Output:1
2
3
4
5
6
7
8z =
0
0
0
0
0
矩阵操作
对矩阵进行算术运算,相当于对其每个元素进行算数运算。1
2
3
4
5a + 10
a - 10
a * 2
a / 2
sin(a)
output:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33ans =
11 12 13
14 15 16
17 18 19
ans =
-9 -8 -7
-6 -5 -4
-3 -2 -1
ans =
2 4 6
8 10 12
14 16 18
ans =
0.5000 1.0000 1.5000
2.0000 2.5000 3.0000
3.5000 4.0000 4.5000
ans =
0.8415 0.9093 0.1411
-0.7568 -0.9589 -0.2794
0.6570 0.9894 0.4121
在真正有力量的环节:
求转置矩阵1
a'
output:1
2
3
4
5
6
ans =
1 4 7
2 5 8
3 6 9
求逆矩阵:1
2inv(a)
a*inv(a)
output:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17ans =
1.0e+16 *
-0.4504 0.9007 -0.4504
0.9007 -1.8014 0.9007
-0.4504 0.9007 -0.4504
警告: 矩阵接近奇异值,或者缩放不良。结果可能不准确。RCOND = 1.541976e-18。
ans =
2 0 2
8 0 0
16 0 8
. 与 ,.^ 与 ^
单走一个*
意思是进行矩阵乘法。而 .*
是对单个元素进行数乘,^
类似。
值得一提的是,数乘的另一操作符可以不是数,而是另一矩阵,相当把两矩阵元素一一对应进行运算。1
2
3a.*3
a.^2
a.^a
output:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19ans =
3 6 9
12 15 18
21 24 27
ans =
1 4 9
16 25 36
49 64 81
ans =
1 4 27
256 3125 46656
823543 16777216 387420489
矩阵串联
用,
代表横着串联
用;
代表竖着串联:1
2
3
4[a,a]
[a;a]
[a,a;a,a]
[a,a;a]
output:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28ans =
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9
ans =
1 2 3
4 5 6
7 8 9
1 2 3
4 5 6
7 8 9
ans =
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9
错误使用 vertcat
要串联的数组的维度不一致。
最后的输出错误也显示了,矩阵串联时维度要一致,可是发现第三行竟然可以运行,说明了其并不是严格的按照从左到右的形式串联的,可以看出matlab的语法还是非常人性化(不严谨)的。
复数
直接用a+bi
表示就完了,i
也可以用j
替代。输出的都是以i
表示。