收集一些好用的函数名,具体语法等用时再查文档。
常用的可以看 MATLAB 教程书籍的附录。这里放一个整理的 pdf。
统计函数
向量的元素和/矩阵的每列和/最值/均值
1 | cumsum(A) % 累积和/每列的累积和,即前缀和 |
向量长度、矩阵大小
1 | length(V) |
列排序(返回数列、原数列元素在新数列的index)
1 | [B I] = sort(V) |
find
很重要很重要!!
第一行找到 v 中大于 0 的元素的下标。
第二行把下标矩阵作为原矩阵的下标,则可以直接筛选到对应下标的元素组成的矩阵。
相当于实现了一个筛选矩阵元素的功能。可以用 if
改写,但是 MATLAB 中矩阵运算更快,因此能用矩阵运算就不要用 if
。
1 | v = [1 0 -3 7 -5]; |
注意到,除了把下标矩阵 idx
传给 v
以外,还可以直接把 v>=0
传给矩阵,省去了一个 find
的过程。
1 | v = [1 0 -3 7 -5]; |
好用的函数收集
(从 xls/xlsx csv txt)读写表格:xlsread
,readmatrix
(MATLAB R2019a 起)。
注意 readmatrix
如不指定 NumHeaderLines
参数时,会自动识别并去掉行表头。写代码的时候小心。
映射、map:containers.Map
。
分段函数:piecewise
。
最优化、规划问题相关
求函数最小值,有一堆工具箱函数不知道有什么区别,可能使用的算法不同:
功能 | 函数名 | 注释 |
---|---|---|
单变量优化 | fminbnd() |
求一元函数最小值 |
无约束优化 | fminsearch() |
使用无导数法计算最小值 |
fminunc() |
计算无约束的多变量函数的最小值 | |
有约束优化 | fmincon() |
在有线性约束下计算最小值 |
线性规划 | linprog() |
解线性规划问题 |
整数规划 | intlinprog() |
解整数线性规划问题 |
遗传算法 | ga() |
包含以上所有功能,不过精度较低 |
基于问题的最优化
最优化相关的基于问题的方法 Problem-Based Approach
:
1 | x = optimvar('x',2,'LowerBound',0); |
说白了,就是 prob2struct
函数能够将 4*x(1) + 2*x(2) + xb == 12
这样的直白的优化式子和约束条件,换为 intlinprog
的 Aeq
beq
。
如果使用传统的方式,这一步转化需要人工完成。
对于复杂的问题,这样更不容易出错。
跑出来的 sol
是一个 1*3 向量,那么 x
和 xb
对应哪些变量呢?
可以使用 varindex
:
1 | >> varindex(prob) |
就可以看出对应关系了。
更多相关资料可查看 Problem-Based Optimization Setup - MATLAB & Simulink
插值拟合相关
该部分详解可见数模自学笔记——插值和拟合。
功能 | 函数名 | 注释 |
---|---|---|
一维插值 | interp1 |
|
二维插值 | interp2 |
|
样条插值 | csape |
|
多项式拟合 | polyfit |
多项式值计算可使用 polyval |
概率统计相关
功能 | 函数名 | 注释 |
---|---|---|
正态概率函数 | normpdf |
pdf: Probability Density Function |
正态分布函数 | normcdf |
cdf: Cumulative Density Function |
正态下侧分位数 | norminv(p) |
返回 $x$ 满足 $\varPhi(x)=p$ |
按正态分布生成随机数 | normrnd |
|
上述函数的卡方分布版本 | 将四个函数的 norm 改为 chi2 |
很香 |
上述函数的均匀分布版本 | 将四个函数的 norm 改为 unif |
|
上述函数的指数分布版本 | 将四个函数的 norm 改为 exp |
|
正态均值检验、参数估计 | ttest |
|
正态方差检验、参数估计 | vartest |
|
总体均值差检验、参数估计 | ttest2 |
|
$\chi^2$ 拟合优度(goodness-of-fit)检验 | chi2gof |
|
正态分布拟合 | normfit |
使用 Wald 检验 |
曲线拟合工具箱 | cftool |
|
分布拟合工具箱 | distributionFitter |
工具箱函数
命令 | 名称 |
---|---|
cftool |
曲线拟合工具箱 |
distributionFitter |
分布拟合工具箱 |
图论
命令名 | 作用 |
---|---|
graphallshortestpaths |
求图中所有顶点对之间的最短距离 |
graphconncomp |
找无向图的连通分支,或有向图的强弱连通分支 |
graphisdag |
测试有向图是否含有圈,不含圈返回1,否则返回0 |
graphisomorphism |
确定两个图是否同构,同构返回1,否则返回0 |
graphisspantree |
确定一个图是否是生成树,是返回1,否则返回0 |
graphmaxflow |
计算有向图的最大流 |
graphminspantree |
在图中找最小生成树 |
graphpred2path |
把前驱顶点序列变成路径的顶点序列 |
graphshortestpath |
求图中指定的一对顶点间的最短距离和最短路径 |
graphtopootder |
执行有向无圈图的拓扑排序 |
graphtraverse |
求从一顶点出发,所能遍历图中的顶点 |
绘图及图片处理
见绘图。
符号编程
见符号编程。