Matlab Basic

Matlab Basic

用于数学建模的Matlab基本语法和常用函数。


数据与变量

矩阵

矩阵为Matlab中最基本数据结构,常量为1×1的矩阵,向量为1×nn×1的矩阵。矩阵默认定义为double双精度型。

定义矩阵

定义矩阵可直接赋值。用空格或逗号分隔每行中元素,用分号分隔各行。

$Eg.$ 定义矩阵 $A=\begin{bmatrix}1 & 2 & 3\\4 & 5 & 6\\7 & 8 & 9\end{bmatrix}$:

1
2
A = [1,2,3;4,5,6;7,8,9]
A = [1 2 3;4 5 6;7 8 9]
冒号表达式

冒号表达式可以快速生成具有均匀元素的行向量,以用于循环计数、作图和差分。冒号表达式的基本结构:

1
2
A = a:b %step==1
A = a:step:b

即可生成$[a,b]$中以步长为$step$的行向量。当$step$省略时默认为1

矩阵的元素

矩阵的子矩阵均可作为其元素被单独赋值、取出和使用。元素的索引借助其矩阵中的脚标:

1
B = A(x,y)

借助冒号表达式可以取出多行和多列的子矩阵。比如取出矩阵$A$的$x1$到$x2$行和$y1$到$y2$列:

1
B = A(x1:x2,y1:y2)

冒号表达式中为空表示范围内的“所有”。比如下面两行代码作用完全相同:

1
2
B = A(:,:)
B = A

同理,矩阵的子矩阵可以用相同方式赋值,不再赘述。

全局变量

如果要在多个function中使用同一变量,需在使用到该变量的文件中声明全局变量:

1
global var

注意全局变量效率较低且难以debug,仅在必要时使用。


逻辑

Matlab代码块格式类似于Python,以缩进(四个空格)代表结构关系,但用end表示逻辑块结束。

条件

表达条件逻辑的判断语句基本结构:

1
2
3
if condition
statement;
end

二分支的结构如下:

1
2
3
4
5
if condition
statement1;
else
statement2;
end
  • condition为返回真伪的逻辑表达式,参照后文运算部分的关系和逻辑运算符

循环

循环逻辑的基本结构:

1
2
3
for prog
statement;
end

对于计数的循环,借助冒号表达式实现即可。

$Eg.$ 输出1~10:

1
2
3
for i=1:10
disp(i);
end

函数

Matlab内置函数在调用前应当预先定义,否则将出现错误。函数的结构如下:

1
2
3
4
function f=name(var)
statement;
f=var_return; %返回函数值
end
  • 若需传入多个参数,可用逗号隔开多个变量:f=name(var1,var2,var3)
  • 向函数f赋值以返回函数值。若需返回多个值,组合为向量返回:f=[re1,re2]
  • 将函数封装为.m文件,需保证函数名称(name)与文件名一致;
  • 若一个文件内定义和调用了多个函数,其定义放在调用的后面。

$Eg.$ 定义计算两数和与差的函数:

1
2
3
4
5
6
7
8
9
10
11
function f=calc(a,b)
f=[add(a,b),dif(a,b)]; %调用
end

function f=add(a,b) %定义
f=a+b;
end

function f=dif(a,b)
f=a-b;
end

运算

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
2
load(filename)
load(filename,variables)

后者仅从文件中载入指定的变量。

同理可用save()函数将变量保存至文件:

1
2
save(filename)
save(filename,variables)

前者保存工作区所有变量,后者仅保存指定变量。

其他处理变量和文件的函数如下:

函数 作用
matfile 访问和更改 MAT 文件中的变量,而不必将文件加载到内存中
disp 显示变量的值
formattedDisplayText 以字符串形式捕获显示输出
who 列出工作区中的变量
whos 列出工作区中的变量及大小和类型
clear 从工作区中删除项目、释放系统内存
clearvars 清除内存中的变量
openvar 在变量编辑器或其他图形编辑工具中打开工作区变量
Author

Byter

Posted on

2022-01-18

Licensed under