MATLAB 零基础学习
简介
MATLAB(Matrix Laboratory)是Mathworks 公司(成立于1984 年,位于马萨诸塞州纳蒂克)
开发的一个软件包。MATLAB 支持高性能数值计算和可视化功能,有80 多个工具箱,可用
于各种计算、图形任务。
https://ww2.mathworks.cn/products/matlab.html
使用平台
本人使用的MATLAB 版本是R2021a
一、MATLAB 界面
启动MATLAB 之后可以看到MATLAB 窗口有以下子窗口:最上面是工具栏和功能区。
- 命令行窗口(Command window):这是MATLAB 主窗口(有命令>>),从中启动应用程
序或键入命令。 - 当前文件夹(Current directory):当前文件的位置,文件的默认路径,文件运行时需要
定位到文件所在目录。输入cd 查看命令,可以查看当前路径,使用cd 命令更改到合适的目
录,执行MATLAB 文件。 - 工作区(Workspace):工作区显示了所有变量的类型和大小,可以单击一个变量进行查
看。 - 编辑器(The Editor window):可以在编辑器这里编辑、创建、保存MATLAB 程序,单击
新建脚本,出现编辑器窗口,点击新建、运行、保存,对文件进行操作。
二、基础操作
使用方法
可以像使用计算器一样使用MATLAB 进行简单加、减、乘、除、指数运算等运算。有两
种使用方法:
(1)直接将运算输入命令行,按回车键得到计算结果。
(2)输入数学表达式进行计算,将结果存储在变量中。
在命令行输入命令之后按回车执行。
其中,r,d 为变量的名称,d=2*r 是赋值语句,首先计算等号右边的值,将值赋值给等号左边的变量。
常用数学函数
以下列举出常用的数学函数,包括三角函数、指数函数、对数函数、复数函数、取整、取余等。
初等函数
+ | 添加数字 |
sum | 数组元素求和 |
cumsum | 累计和 |
movsum | 移动总和 |
- | 减法 |
diff | 差分和近似导数 |
.* | 乘法 |
* | 矩阵乘法 |
prod | 数组元素的乘积 |
cumprod | 累积乘积 |
pagemtimes | 按页矩阵乘法 |
./ | 数组右除 |
.\ | 数组左除 |
/ | 求解关于x的线性方程组 xA =B |
\ | 求解关于x的线性方程组 Ax =B |
.^ | 按元素求幂 |
^ | 矩阵幂 |
mod | 除后的余数(取模运算) |
rem | 除后的余数 |
idivide | 带有舍入选项的整除 |
ceil | 向正无穷舍入 |
fix | 向零舍入 |
floor | 向负无穷舍入 |
round | 四舍五入为最近的小数和整数 |
三角函数
sin | 参数的正弦,以弧度为单位 |
sind | 参数的正弦,以度为单位 |
sinpi | 准确地计算sin(X*pi) |
asin | 反正弦(以弧度为单位) |
asind | 反正弦(以度为单位) |
sinh | 双曲正弦 |
asinh | 反双曲正弦 |
cos | 以弧度为单位的参数的余弦 |
cosd | 以度为单位的参数的余弦 |
cospi | 准确地计算cos(X*pi) |
acos | 反余弦(以弧度为单位) |
acosd | 反余弦(以度度为单位) |
cosh | 双曲余弦 |
acosh | 反双曲余弦 |
tan | 以弧度为单位的参数的正切 |
tand | 以度为单位的参数的正切 |
atan | 反正切(以弧度为单位) |
atand | 反正切(以度为单位) |
atan2 | 四象限反正切 |
atan2d | 四象限反正切(以度为单位) |
tanh | 双曲正切 |
atanh | 反双曲正切 |
指数和对数
exp | ex |
expm1 | 针对较小的X值正确计算exp(x)-1 |
log | 自然对数ln |
log10 | 常用对数以10为底 |
log1p | 针对较小的X值正确计算log(1+x) |
log2 | 以2为底的对数和浮点数分解 |
nextpow2 | 2的更高次幂的指数 |
nthroot | 实数的第n次实根 |
pow2 | 浮点数的以2为底的幂运算和缩放 |
reallog | 非负数-实数-数组的自然对数 |
realpow | 仅实数输出的数组幂 |
realsqrt | 非负-实数-数组的平方根 |
sqrt | 平方根 |
复数
abs | 绝对值的和复数的模 |
angle | 相位角 |
complex | 创建复数数组 |
conj | 复共轭 |
cplxpair | 将复数排序为复共轭对组 |
i | 虚数单位 |
imag | 复数的虚部 |
isreal | 确定数组是否使用复数存储 |
j | 虚数单位 |
real | 复数的实部 |
标点符号
(1)分号(;)
在一条语句结尾处作为结束,或者用于数组分行。
(2)百分号(%)
在程序文本中添加注释,百分号之后的文本为注释,不进行编译。
常用操作
以下列举一些常用的命令和快捷键,可以操作更加方便。
ans | 最近计算的答案 |
clc | 清空命令行窗口 |
diary | 将命令行窗口文本记录到日志文本中 |
format | 设置命令行窗口的输出显示格式 |
home | 发送光标复位 |
iskeyword | 确定输入是否为Matlab关键字 |
more | 控制命令行窗口的分页输出 |
clear | 清空工作区的变量 |
cd | 显示或者更改工作目录 |
dir | 显示当前目录下的文件 |
Esc | 取消当前输入行 |
↑ | 调用上一行 |
↓ | 调用下一行 |
Ctrl+k | 剪切光标和表达式结尾之间的内容 |
Ctrl+N | 新建脚本 |
三、文件类型
MATLAB 的文件,文件是命令数据的集合。
- m 文件,扩展为.m
用MATLAB 编写的程序文件为M 文件,可以读取、修改、执行。根据调用方式的不同,分为脚本文件(script)和函数文件(function)。脚本文件是代码的集合,将一系列命令输入到脚本文件中,执行文件,会依次执行命令。函数文件时以function 为开头,定义一个函数,可以被调用。 - mat 文件,扩展为.mat
MATLAB 中使用的数据存储文件,保存时创建,使用load 命令进行读取。 - figure 文件,扩展为.fig
MATLAB 的图形,保存时创建。
数组
一、数组基础知识
- 数组简介
数组是一个相同数据类型元素的集合(通常存储在连续的内存位置),单个数据元素通
过一个或多个索引(在两个或多个维度的情况下)进行访问。 - 数组分类
根据数组元素个数排列方式分类,数组可分为:空数组,向量(一维数组),二维数组,多维数组。
空数组是没有元素的数组。
向量是只有一行或者一列的数组,也称为一维数组。只有一个元素的变量也认为是一维数组。一维数组x=[1 2 3 4 ]有四个元素。
二维数组具有多行多列。二维数组是矩阵。二维数组y=[1 2 3; 4 5 6]有两行三列。
多维数组是维数超过2 的数组,具有多个维度。 - 数组维数计算
通过size()函数可以得到数组每一维的大小,返回n 维向量,包含每一维的大小。
length()函数返回数组的最大维度。
二、数组创建与操作
创建数组可以通过直接输入来创建,也可以通过MATLAB 内置函数来创建。
创建
(1) 直接创建
1. >>x=[1 2 3] 2. x= 3. 1 2 3 4. >>y=[1;2;3] 5. y= 6. 1 7. 2 8. 3
(2) 内置函数创建
函数zeros(m,n)可以创建全为0 的m 行n 列的数组。
函数ones(m,n)可以创建全为1 的m 行n 列的数组。
函数diag(A)可以创建对角元素为A 的对角矩阵。
函数 eye()可以创建单位矩阵。
函数 rand(m,n)可以创建 m 行 n 列的取值为 0-1 的随机数组。
函数 linspace(x1,x2,n)可以创建在 x1 和 x2 之间的等距数组。
数组操作
(1) 获取数组中的元素
根据索引值获取元素,利用圆括号括起来索引值。如:A(2,3)得到数组A 中第二行第三列的元素。
根据冒号和表达式获取元素,如:A(i,:)得到第i 行的所有元素,A(i,:)得到第i 行的所有元素,A(:,j)得到第j 列的所有元素。A(i,k:k+m)得到第i 行第k 列到k+m 列的所有元素,A(k:k+m,j)得到第k 行到k+m 行第j 列的所有元素。
(2) 数组算数操作
两个数组的维数相同或者其中一个为标量可以进行加减乘除指数算数操作。两个数组的乘法、除法、指数运算需要用’.’点操作符,如:.*, ./, .^。
(3)使用库函数运算
sum 函数运用于二维数组时,计算数组每一列元素的和,返回一个行向量。运用于一维数组时,返回数组所有元素的和。
mean 函数运用于二维数组时,计算数组每一列元素的平均值,返回一个行向量。运用于一维数组时,返回数组所有元素的平均值。
min 函数运用于二维数组时,返回数组每一列元素的最小值,返回每一列最小值所在行号的行向量。运用于一维数组时,返回数组的最小值和位置。
max 函数运用于二维数组时,返回数组每一列元素的最大值,返回每一列最大值所在行号的行向量。运用于一维数组时,返回数组的最大值和位置。
(4) 数组逻辑运算
对数组进行逻辑运算得到布尔值,返回逻辑值数组与原数组具有相同大小。
与”&”对数组进行与逻辑运算,或”|”对数组进行或逻辑运算,非”~”对数组进行非逻辑运算,如下。
(5) 数组连接
如果两个数组具有相同的行数,两个数组可以水平方向连接。[A,B]
如果两个数组具有相同的列数,两个数组可以垂直方向连接。[A;B]