学习一门技术最好的方式就是阅读官方文档,可以查看MATLAB官方文档

MATLAB基本语法

变量

  • MATLAB中的变量不需要声明.
  • 使用=为变量赋值

    变量名

  • 与大多数编程语言相同,MATLAB中的变量名是大小写敏感的.

  • 变量名只能由[0~9,a~z,A~z,_(下划线)]组成,且变量名不能以数字开头.

    保留变量不适合做变量名

    MATLAB中有一些变量有其具体意义,不适合用作变量名.
变量 意义
ans 上一句的运算的结果
i 和 j 复数算子
Inf 无穷\infty ∞
eps 浮点相对精度,即1.0到下一个浮点数之间的距离(值为2.2204e-16)
NaN 非数字
pi 圆周率\pi π

除此以外,使用iskeyword命令可以查看MATLAB语言所有的关键字,这些关键字也不允许被用作变量名.

变量名不应当覆盖内置函数名

在MATLAB中,变量的调用优先级(calling priority)高于函数,因此变量名不应该覆盖内置函数.
image.png

  1. cos='This string.';
  2. cos(8) % 对字符串进行索引取值,得到'r'

若某函数被变量名所覆盖,则调用clear <变量名>可以取消绑定在该函数名上的变量名

clear cos        % 清除绑定在cos上的变量 
cos(8)            % 调用内置余弦函数运算得到-0.1455

clear是一个比较危险的命令,因为该命令后若不加参数,则表示清除当前工作区内的所有变量.

变量类型

MATLAB中的变量类型有: logical ,char ,numeric ,cell ,struct以及由他们组成的数组或矩阵.
image.png

数字型变量的显示格式

我们直接定义的数字型变量,默认是以double形式存储的.
我们可以通过format <显示格式>改变数字型变量的显示格式.

显示格式 说明 例子
short 短定点格式.显示小数点后4位 3.1416
long 长定点格式.对double类型变量显示小数点后15位,对float类型变量显示小数点后7位. 3.141592653589793
shortE/shortEng 短科学计数法,显示小数点后4位.并带有科学计数法标记. 3.1416e+00
longE/longEng 长科学计数法.对double类型变量显示小数点后15位,对float类型变量显示小数点后7位.并带有科学计数法标记. 3.141592653589793e+00
bank 银行格式.显示小数点后2位. 3.14
hex 十六进制格式. 400921fb54442d18
rat 比例格式 355/113

MATLAB命令行

  1. 使用行尾;抑制输出: 在一行命令后使用;抑制输出,否则运算结果将被显示在终端上.
  2. 其他实用的命令: | 命令 | 作用 | | —- | —- | | clc | 清除终端的输出(command window) | | clear | 清除当前工作区内所有变量(workspace) | | who | 以简略格式显示工作区内所有变量(workspace) | | whos | 以复杂格式显示工作区内所有变量(workspace) |

使用MATLAB进行数字运算

使用MATLAB计算数学表达式

  • MATLAB常见运算符有: +,-,*,/,^.
  • 数学表达式被计算后,其值被存入变量ans.
  • 运算的优先级规则:
    • 同等优先级下从左向右运算.
    • 优先级顺序(从高到低)
      • 括号()
      • 乘方^
      • 乘除法*,/
      • 加减法+,-

下面例子演示了数学表达式求值:

待求数学表达式 MATLAB命令
image.png cos(sqrt((1+2+3+4)^3/5))
image.png sin(sqrt(pi))+log(tan(1))
image.png 2^(3.5*1.7)
image.png exp(sin(10))

MATLAB内置的数学函数

  • MATLAB内置的算数运算函数
    • 基本运算:
      • 加: + , sum , cumsum , movsum
      • 减: - , diff
      • 乘: . , prod , cumprod
      • 除: . / , .\ , / , \
      • 乘方: .^ , ^
    • 取模运算: mod,rem,idivide,ceil,fix,floor,round
  • MATLAB内置的三角运算函数
    • 正弦: sin,sind,sinpi,asin,asind,sinh,asinh
    • 余弦: cos,cosd,cospi,acos,acosd,cosh,acosh
    • 正切: tan,tand,atan,atand,atan2,atan2d,tanh,atanh
    • 余割: csc,cscd,acsc,acscd,csch,acsch
    • 正割: sec,secd,asec,asecd,sech,asech
    • 余切: cot,cotd,acot,acotd,coth,acoth
    • 斜边: hypot
    • 转换: deg2rad,rad2deg,cart2pol,cart2sph,pol2cart,sph2cart
  • MATLAB内置的指数对数函数: exp,expm1,log,log10,log1p,log2,nextpow2,nthroot,pow2,reallog,realpow,realsqrt,sqrt
  • MATLAB内置的复函数: abs,angle,complex,conj,cplxpair,i,imag,isreal,j,real,sign,unwrap

    使用MATLAB进行矩阵运算

    定义矩阵

    向终端输入矩阵

    在MATLAB中,使用 [ ] 将待输入的矩阵内容括起来,使用空格或逗号,分隔行内变量,使用;分隔每一行.
    下面例子演示了矩阵的定义:
MATLAB命令 得到的矩阵
[1 2 3 4] image.png
[1; 2; 3; 4] image.png
[1 21 6; 5 17 9; 31 2 7] image.png

使用冒号运算符创建向量

使用冒号运算符:可以创建一个长向量,其语法如下:

冒号表达式 得到的结果
j:k image.png
j:i:k image.png

下面例子演示了冒号运算符的使用:

MATLAB语句 得到的结果
1:5 image.png
1:2:5 image.png
[1:5; 2:3:15; -2:0.5:0] image.png
‘a’:2:’z’ ‘acegikmoqsuwy’

定义特殊矩阵

下列命令可以定义特殊矩阵

命令 得到的结果
linspace(first,last,number_of_elements) 知道向量中所需的元素数目
注意,使用逗号 (,) 分隔输入。
eye(n) 得到一个n×n的单位矩阵
zeros(n1, n2) 得到一个n1×n2的全0矩阵
ones(n1, n2) 得到一个n1×n2的全1矩阵
diag(vector) 得到一个以向量vector中内容为对角线的对角矩阵
rand(n1,n2) 生成一个n1×n2的随机数矩阵

矩阵的索引

  • MATLAB中的矩阵是以列先序存储的.且索引下标从1开始.
  • 矩阵有两种索引方式: 按一维索引和按二维索引.对于一个一般的矩阵,其索引顺序如下:
    image.png
  • 矩阵的索引可以使用冒号 :,表示选取所有行或所有列.
  • 矩阵的索引可以是一个或两个向量,表示选中向量内的所有行或所有列.

下面例子演示了矩阵索引的规则:
image.png

矩阵的操作

矩阵的修改

  • 直接双击表格修改
  • 用索引修改
  • 删除一行或列

A([1,:])=[ ] 第一行的所有列为空
>>A([1,2],[2,3])=[ ] 第一二行和第三四列交叉点为零

矩阵的串联

A=[1 2; 3 4]
A =
1 2
3 4
>> B=[9 9 ;9 9]
B =
9 9
9 9

  • 空格横向相连

F=[A B]
F =
1 2 9 9
3 4 9 9

  • ;分号纵向相连

F=[A;B]
F =
1 2
3 4
9 9
9 9

操作矩阵的运算符

运算符 操作 形式 例子
+ 矩阵与向量相加 A+b [6 3] + 2 = [8 5]
- 矩阵与向量相减 A-b [6 3] - 2 = [4 1]
+ 矩阵与矩阵对应位置相加 A+B [6 3] + [4 8] = [10 11]
- 矩阵与矩阵对应位置相减 A-B [6 3] - [4 8] = [2 -5]
* 矩阵与矩阵相乘 A*B [6 3] * [4 8]’ = 48
.* 矩阵与矩阵对应位置相乘 A.*B [6 3] * [4 8] = [24 24]
/ 矩阵与矩阵右除(等价于A*inv(B))
inv(B)是B的逆矩阵
A/B [6 3] / [4 8] = 0.6
\ 矩阵与矩阵左除(等价于inv(A)*B) A\B [6 3] / [4 8] = [0.06667 1.3333; 0 0]
./ 矩阵与矩阵对应位置右除 A./B [6 3] ./ [4 8] = [1.5 0.375]
.\ 矩阵与矩阵对应位置左除 A.\B [6 3] .\ [4 8] = [0.6667 2.6667]
^ 矩阵与向量乘方 A^b [1 2; 3 4]^3 = [37 54; 81 118]
.^ 矩阵与矩阵对应位置乘方 A.^B [1 2; 3 4].^[1 2; 3 4] = [1 4; 27 256]

操作矩阵的函数

下面对矩阵
image.png
进行操作以演示操作矩阵的常见函数

函数 作用 例子 结果
max( A) 获取矩阵A的每一列上的最大值,组成一个新矩阵 max(A) image.png
max(A, [], dim) 获取矩阵A的dim维度上的最大值 max(A, [], 1) image.png
min(A, [], dim) 获取矩阵A的dim维度上的最小值 min(A, [], 2) image.png
sum(A, dim) 获取矩阵A的dim维度上的和 sum(A, 1) image.png
mean(A, dim) 获取矩阵A的dim维度上的平均值 mean(A, 1) image.png
sort(A) 获取矩阵A的每一列的升序顺序排序结果 sort(A) 0 0 3
1 2 6
7 5 9
sort(A, dim, direction) 获取矩阵A的dim维度上按direction顺序排序结果 sort(A, 1, ‘descend’) image.png
sortrows(A) 获取矩阵A按照每行第一列元素升序排序结果,整行移动 sortrows(A) 0 5 6
1 2 3
7 0 9
sortrows(A, column) 获取矩阵A按照每行第column个元素升序排序结果. sortrows(A, 2) image.png
size(A, dim) 获取矩阵A的dim维度上的形状.若不指定dim,则返回整个矩阵的形状. size(A) image.png
find(A, n) 获取矩阵A前n个非零元素的索引 find(A,5) image.png
find(A==x) 获取矩阵A中等于x的索引
length(A) 获取矩阵A行数列数的最大值,一维向量可以测量长度

对于上面这些函数,除第一个参数以外,其它参数都是可选的.