数模 · 2020年1月22日 0

Matlab-数模被迫营业-01入门篇

写在前面:

由于之前长期做深度学习和计算机视觉,对于计算(尤其矩阵运算)我比较喜欢用python,其对于数据导入、处理和数据可视化都有比较方便的库函数,不过,稀里糊涂的美赛就要来了,据说哦,matlab比py香得多…那就入一手坑好吧。(我虽然是工科,但线性代数上机我是真的meiqu…至于大作业,我用numpy做的…

由于c语言相对规范整洁,且大多数人都有过系统的学习,拿来和matlab对比应该是个不错的选择…

基本のTips

1、句末有分号和没有分号,不加分号回车后会输出结果,加分号回车后重启一行不输出结果(c的操作语句都要加分号

 

2、输出结果前的=添加与否

如图:

此时加=报错

不加=反而不报错

但是输出的结果变量名是ans(answer)

这样子采用一个变量名就可以避免使用ans

总体来说这一点和c非常相像,却也没有c那么严格

 

3、按 (↑) 和 (↓) 可以重新调用以前的命令。若要快速定位,可以先键入命令的前几个字符之后按箭头键。例如,要重新调用命令 b = 2,请键入 b,然后按向上箭头键。

 

4、数组矩阵数据的创建

创建每行包含四个元素的数组,使用  逗号 或  空格  分隔各元素。

eg.   a=[1 2 3 4]

创建包含多行的矩阵,用分号分隔各行。

eg.   a=[1 2 3; 4 5 6; 7 8 10]

创建矩阵的另一种方法是使用 ones、zeros 或 rand 等函数。

eg.    创建一个由零组成的 5×1 列向量:z=zeros(5,1)

 

5、矩阵的运算

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

a = [1 2 3; 4 5 6; 7 8 9]

a+10

a = [11 12 13;14 15 16 ;17 18 19]

我就喜欢这么粗暴的

sin(a)呢?同上

 

2)要转置矩阵,用单引号 (‘)

3)使用 * 运算符做 标准矩阵乘法,计算 行与列 之间的内积
如图(有没有发现我换了一个例子,不是原来的123456789,想一想,为撒?)
4)矩阵中的数据类型
上面的例子我们发现:p 不是整数值矩阵。(而其实我们没有做什么)
MATLAB 将 数字 存储为 浮点值,算术运算可以区分 实际值 与 其浮点 表示之间的细微差别。
主要是inv(a)是一个浮点数类型的矩阵…
当然我们也可以主动一点:用 format 命令可以显示更多小数位数:
操作过程如上,我们也发现format long之后不用加分号他也会让我们继续输入
同样的,format short也可以让他小数位数更短一点
ps: format  仅影响数字显示,而不影响 MATLAB 对数字的计算或保存方式!
5)要执行 元素级乘法(而非矩阵乘法),使用  .*  运算符
ps:乘法、除法和幂的矩阵运算符也具有执行元素级运算的对应数组运算符。
例如,计算 a 的各个元素的三次方:a.^3
6)串联 –连接数组以便形成更大数组的过程
第一个矩阵是通过将其各个元素串联起来而构成的。
成对的方括号 [] 即为串联运算符。
A = [a,a]  使用 逗号 将彼此相邻的矩阵串联起来称为 水平 串联,要求每个矩阵必须具有相同的行数。
A = [a; a]  如果各数组具有相同的列数,则可以使用分号垂直 串联。
6、矩阵的索引

引用数组中的特定元素有两种方法。

最常见的方法是指定行和列下标,我喜欢称其为坐标法hhh

还有一种所谓的遍历法,说白了往下逐个计数

我还是说点术语好吧:使用 单一下标 引用数组中特定元素的方法称为 线性索引。

关于索引的界限:

如果尝试在赋值语句右侧引用数组外部元素,MATLAB 会引发错误,如

test=a(3,4)不会有输出

但是!如果你这样:

他会给你加上,然后用0填补。

 

所以有人会说,如果我想引用多个元素:

引用多个数组元素用 冒号运算符,指定一个格式为 start:end 的范围。

举个例子,列出 A 前三行及第二列中的元素:A(1:3,2)

而单独的冒号(没有起始值或结束值)指定该维中的所有元素。

例如,选择 A 第三行中的所有列:

A(3,:)

 

所以说到冒号,这个用法比较独特的运算符,它还允许使用较通用的格式

start:step:end 来创建等距向量值(如下)

B = 0:10:100

B =

0 10 20 30 40 50 60 70 80 90 100

 

ps:如果省略中间的步骤(如 start:end 中),MATLAB 会使用默认步长值 1。

 

 

 

7、工作区中的变量

工作区 包含在 MATLAB 中创建 或 从数据文件 或 其他程序 导入的变量。就我用的R2019b而言,可以直观地在右手边看到历史变量和对应的值。

使用 whos 可以查看工作区的内容:

退出 MATLAB 后,工作区变量不会保留。使用 save 命令保存数据以供将来使用:

save myfile.mat

通过保存,系统会使用 .mat 扩展名将工作区保存在当前工作文件夹中一个名为 MAT 文件的压缩文件中。

要清除工作区中的所有变量,请使用 clear 命令。

clear

使用 load 将 MAT 文件中的数据还原到工作区。

load myfile.mat

(以上官网copy)