前言
在Matlab\Octave中,矩阵计算是常见形式,矩阵也是数据集导入储存的常见形式,而且在Matlab\Octave中也对矩阵运算进行了特别优化,比如在处理大数据集时,向量化能有效优化运算时间,但这章只涉及一些基础常见的运算操作。
练习是学习语言的最好途径
打开命令行窗口,尝试以下语句,试试他们的作用,观察他们的输出。
A = [1, 2 ,3; 4, 5, 6; 7, 8, 9]
A + 1
A - 1
A * 2
A / 2
A^2
A'
M = magic(5)
N = magic(5)
M * N
M .* N
M ./ N
A(:, 2 )
M(:, 2 : 5 )
M(1, 2 : 5 )
你应该看到的
>>A = [1, 2 ,3; 4, 5, 6; 7, 8, 9]
A =
1 2 3
4 5 6
7 8 9
>>A + 1
ans =
2 3 4
5 6 7
8 9 10
>>A - 1
ans =
0 1 2
3 4 5
6 7 8
>>A * 2
ans =
2 4 6
8 10 12
14 16 18
>>A / 2
ans =
0.5000 1.0000 1.5000
2.0000 2.5000 3.0000
3.5000 4.0000 4.5000
>>A^2
ans =
30 36 42
66 81 96
102 126 150
>>A'
ans =
1 4 7
2 5 8
3 6 9
>>M = magic(5)
M =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>>N = magic(5)
N =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>>M * N
ans =
1090 900 725 690 820
850 1075 815 720 765
700 840 1145 840 700
765 720 815 1075 850
820 690 725 900 1090
>>M .*N
ans =
289 576 1 64 225
529 25 49 196 256
16 36 169 400 484
100 144 361 441 9
121 324 625 4 81
>>M ./ N
M ./ N
ans =
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
>>A(:, 2 )
ans =
2
5
8
>>M(:, 2 : 5 )
ans =
24 1 8 15
5 7 14 16
6 13 20 22
12 19 21 3
18 25 2 9
>>M(1, 2 : 5 )
ans =
24 1 8 15
观察
了解以上每个命令的运行
新建一个ex1.m文件,记录上面的命令,并使用%在每一行的代码前一行进行记录,说明一下该行的情况。如下:
%这是注释
如果实在猜不出来,就试图查找相关文档吧,没有人能够一下子完全理解他人的程序,资料文档是程序员之间最常见的交流。
加分习题
1.自己找个想要计算的东西,写一个 .m 文件把它计算出来,并输出。 输出函数如下:
fprintf('%f' ,[1,2,3])
2.尝试一下如magic()一样生成矩阵的方法,
如zeros()、ones()、rand()...还有更多类似方法,尝试搜索还有哪些。
3.自行查找一些针对矩阵进行计算的函数,如求求行列式det()。
常见解答
为什么输入时显示错误?
注意你的符号,缩进,是否跟上文给出的代码一致,在初学时有各种各样的情况,需要细心,你也可以把每次犯错的东西记录起来以便在相同的情况时引起你的注意,当你习惯了这,一切都会变得自然起来。
为什么magic()出来的东西不太一样?
因为实际上这是个随机生成矩阵的函数,这类函数还有很多,可以尝试去查阅文档了解他们的背后逻辑。
查阅文档无从下手?
[MathWork官方文档]https://ww2.mathworks.cn/help/matlab/
只有一部分是中文的,但是在程序的世界里面,英语是拥有最多资料的,不会英文的话就只能当’二等公民‘,而且对于想深究的人来说,一手资料永远是最好的。尝试跳出舒适区,都2019年了,至少也要尝试使用各类翻译插件对照着看