写在前面:
由于之前长期做深度学习和计算机视觉,对于计算(尤其矩阵运算)我比较喜欢用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)要转置矩阵,用单引号 (‘)




引用数组中的特定元素有两种方法。
最常见的方法是指定行和列下标,我喜欢称其为坐标法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)