Matlab Basic
用于数学建模的Matlab基本语法和常用函数。
数据与变量
矩阵
矩阵为Matlab中最基本数据结构,常量为1×1
的矩阵,向量为1×n
或n×1
的矩阵。矩阵默认定义为double双精度型。
定义矩阵
定义矩阵可直接赋值。用空格或逗号分隔每行中元素,用分号分隔各行。
$Eg.$ 定义矩阵 $A=\begin{bmatrix}1 & 2 & 3\\4 & 5 & 6\\7 & 8 & 9\end{bmatrix}$:
1 | A = [1,2,3;4,5,6;7,8,9] |
冒号表达式
冒号表达式可以快速生成具有均匀元素的行向量,以用于循环计数、作图和差分。冒号表达式的基本结构:
1 | A = a:b %step==1 |
即可生成$[a,b]$中以步长为$step$的行向量。当$step$省略时默认为1
。
矩阵的元素
矩阵的子矩阵均可作为其元素被单独赋值、取出和使用。元素的索引借助其矩阵中的脚标:
1 | B = A(x,y) |
借助冒号表达式可以取出多行和多列的子矩阵。比如取出矩阵$A$的$x1$到$x2$行和$y1$到$y2$列:
1 | B = A(x1:x2,y1:y2) |
冒号表达式中为空表示范围内的“所有”。比如下面两行代码作用完全相同:
1 | B = A(:,:) |
同理,矩阵的子矩阵可以用相同方式赋值,不再赘述。
全局变量
如果要在多个function
中使用同一变量,需在使用到该变量的文件中声明全局变量:
1 | global var |
注意全局变量效率较低且难以debug,仅在必要时使用。
逻辑
Matlab代码块格式类似于Python
,以缩进(四个空格)代表结构关系,但用end
表示逻辑块结束。
条件
表达条件逻辑的判断语句基本结构:
1 | if condition |
二分支的结构如下:
1 | if condition |
condition
为返回真伪的逻辑表达式,参照后文运算
部分的关系和逻辑运算符
。
循环
循环逻辑的基本结构:
1 | for prog |
对于计数的循环,借助冒号表达式实现即可。
$Eg.$ 输出1~10:
1 | for i=1:10 |
函数
非Matlab
内置函数在调用前应当预先定义,否则将出现错误。函数的结构如下:
1 | function f=name(var) |
- 若需传入多个参数,可用逗号隔开多个变量:
f=name(var1,var2,var3)
; - 向函数
f
赋值以返回函数值。若需返回多个值,组合为向量返回:f=[re1,re2]
; - 将函数封装为
.m
文件,需保证函数名称(name)
与文件名一致; - 若一个文件内定义和调用了多个函数,其定义放在调用的后面。
$Eg.$ 定义计算两数和与差的函数:
1 | function f=calc(a,b) |
运算
Matlab运算符
算术运算符
符号 | 运算 | 更多信息(文档) |
---|---|---|
+ |
加法 | plus |
+ |
一元加法 | uplus |
- |
减法 | minus |
- |
一元减法 | uminus |
.\* |
按元素乘法 | times |
\* |
矩阵乘法 | mtimes |
./ |
按元素右除 | rdivide |
/ |
矩阵右除 | mrdivide |
.\ |
按元素左除 | ldivide |
\ |
矩阵左除 | mldivide |
.^ |
按元素求幂 | power |
^ |
矩阵幂 | mpower |
.' |
转置 | transpose |
' |
复共轭转置 | ctranspose |
关系运算符
符号 | 运算 | 更多信息(文档) |
---|---|---|
== |
等于 | eq |
~= |
不等于 | ne |
> |
大于 | gt |
>= |
大于或等于 | ge |
< |
小于 | lt |
<= |
小于或等于 | le |
逻辑运算符
符号 | 角色 | 更多信息(文档) |
---|---|---|
& |
计算逻辑 AND | and |
| |
计算逻辑 OR | or |
&& |
计算逻辑 AND(具有短路功能) | Logical Operators: Short-Circuit && || |
|| |
计算逻辑 OR(具有短路功能) | |
~ |
计算逻辑 NOT | not |
常数与基本函数
数学常数和基本函数内容较多,参照MathWorks官方文档。
IO和文件
对于已有的存储Matlab变量数据的.m
文件,可用load()
函数载入:
1 | load(filename) |
后者仅从文件中载入指定的变量。
同理可用save()
函数将变量保存至文件:
1 | save(filename) |
前者保存工作区所有变量,后者仅保存指定变量。
其他处理变量和文件的函数如下:
函数 | 作用 |
---|---|
matfile |
访问和更改 MAT 文件中的变量,而不必将文件加载到内存中 |
disp |
显示变量的值 |
formattedDisplayText |
以字符串形式捕获显示输出 |
who |
列出工作区中的变量 |
whos |
列出工作区中的变量及大小和类型 |
clear |
从工作区中删除项目、释放系统内存 |
clearvars |
清除内存中的变量 |
openvar |
在变量编辑器或其他图形编辑工具中打开工作区变量 |
Matlab Basic