MATLAB基础知识学习笔记
01 基础操作与矩阵输入
1.1 基本操作
1.1.1 运算符
运算符主要有:+
、-
、*
、/
、^
+
:加法运算-
:减法运算*
:乘法运算/
:除法运算^
:乘方运算,例如:2^3=8
运算优先级:
优先级 | 运算符 |
---|---|
1 | () |
2 | ^ |
3 | *, / |
4 | +, - |
1.1.3 关键字
特殊变量与常量:
关键字名称 | 说明 |
---|---|
ans | answer,MATLAB运行窗口中每次的运算结果。 |
i ,j | 复数计算时,需要用到i 和j 。 |
Inf | ∞,无穷大。如x = 1/0 |
eps | 2.2204e-016 ,很小的一个数。如x = log(0) |
NaN | 不是一个数。如x = Inf/Inf |
pi | π |
MATLAB中的关键字:
>> iskeyword
ans =
20×1 cell 数组
{'break' }
{'case' }
{'catch' }
{'classdef' }
{'continue' }
{'else' }
{'elseif' }
{'end' }
{'for' }
{'function' }
{'global' }
{'if' }
{'otherwise' }
{'parfor' }
{'persistent'}
{'return' }
{'spmd' }
{'switch' }
{'try' }
{'while' }
1.1.4 数值显示格式控制
类型 | 结果 | 举例(以pi 为例) |
---|---|---|
short | 固定小数点后4位 | 3.1416 |
shortE | 固定小数点后4位,且使用科学计数法表示 | 3.1416e+00 |
long | 固定小数格式,双值小数点后15位,单值小数点后7位 | 3.141592653589793 |
longE | 固定小数格式,双值小数点后15位,单值小数点后7位,且使用科学计数法表示 | 3.141592653589793e+00 |
bank | 小数点后两位 | 3.14 |
hex | 二进制双精度数的十六进制表示法 | 400921fb54442d18 |
rat | 分数表示 | 355/113 |
在MATLAB里输入如下所示,即可改变接下来的所有的数值显示
>> format long/short/...
1.1.5 command window和workspace的显示控制
command window的显示控制
;
的使用a = 2
:按回车会打印ans且变量a存储到workspace中a = 2;
:按回车会不会打印ans,但变量a依旧存储到workspace中
- 使用 ↑ 键与 ↓ 键可以控制历史输入
clc
:清空命令行窗口
workspace的显示控制
clear
:清空workspace里的所有信息(该操作不可逆!)clear var
:删除workspace中变量varwho
:打印存储在workspace中的所有变量whos
:更为详细地打印出workspace中的所有变量信息
1.2 矩阵相关
1.2.1 矩阵的常规输入
- 行向量:
a = [1 2 3]
(数字之间用空格隔开,表示数字在同一行) - 列向量:
b = [1;2;3]
(数字之间用分号隔开,分号相隔的数字单独成行)
1.2.2 矩阵元素的提取
以 A = [ 1 2 3 0 5 6 7 0 9 ] \ A = \begin{bmatrix}1 & 2 & 3\\ 0 & 5 & 6 \\7 & 0 & 9\end{bmatrix} A=⎣⎡107250369⎦⎤为例,MATLAB对矩阵元素所在下标存在两种提取方式:
方式一:A(row, col)
-
提取单个元素(返回数值)
如
A(2,1)
:提取矩阵A中第二行第一列的元素,即0 -
提取多个元素(返回由元素依据相对位置所组成的新矩阵)
这里利用复合形式的row和col,如
A([1 3], [1 3])
,所提取的下标分别为(1,1)
、(1,3)
、(3,1)
、(3,3)
这里可以理解成两次迭代,首先迭代row
[1 3]
,当row为1时,迭代col[1 3]
中的1
与3
,从而组成A(1,1)
与A(1,3)
;当row为3时,迭代col[1 3]
中的1
与3
,从而组成A(3,1)
与A(3,3)
。所以最终结果为由1 3 7 9所组成的新矩阵
[1,3; 7,9]
方式二:A(index)
这里矩阵的下标从左往右依次纵向数,如A(3,1)
的index为3,A(1,2)
的index为4。
-
提取单个元素(返回数值)
如
A(8)
:提取矩阵A中纵向开始数,从左往右依次纵向数,第8个元素,即6 -
提取多个元素(返回由元素依据相对位置所组成的新矩阵)
-
A([1 3 5])
:表示将A(1),A(3),A(5)整合为一个行向量,结果为[1 31 17]
,即:[A(1) A(3) A(5)]
-
A([1 3; 1 3])
:同上,即表示:[A(1) A(3);A(1) A(3)]
-
1.2.3 冒号的使用
语法:
开始值:步长:结束值
快速创建矩阵
如B = 1:5
等价于B = [1,2,3,4,5]
,B = 1:2:5
等价于B = [1,3,5]
用冒号代表一整行或一整列
-
用:代表要显示的整行整列
显示矩阵的一整行:
A(3, :)
表示显示矩阵的第3行,冒号表示全部信息
显示矩阵的一整列:A(:, 2)
表示显示矩阵的第2列 -
删除整行整列
删除一整行或一整列:赋值
[]
即可;如A(3, : ) = []
使得A的第三行被删除
1.2.4特殊矩阵
函数 | 说明 |
---|---|
linspace() | 生成线性均分的向量 |
eye(n) | n×n的单位矩阵(identity matrix) |
zeros(n1, n2) | n1×n2的零矩阵(zero matrix) |
ones(n1, n2) | n1×n2的元素全为1矩阵 |
diag() | 对角矩阵(diagonal matrix) 一般用法: diag([12345]) ,生成对角线为1 2 3 4 5的矩阵 |
rand() | 随机矩阵,各元素为0到1的随机数 |
1.2.5 矩阵连接
增广矩阵C = A|B在MATLAB中采用C = [A B]
表示
同理,若要将B矩阵放在A矩阵的下方,则表示为:C = [A;B]
(也就是把之前的数字换为矩阵)
1.2.6 矩阵运算符
符号 | 说明 | 举例 |
---|---|---|
' | 矩阵的转置 | 若A :
[
1
2
3
0
5
6
7
0
9
]
\begin{bmatrix}1 & 2 & 3\\ 0 & 5 & 6 \\7 & 0 & 9\end{bmatrix}
⎣⎡107250369⎦⎤,则A' :
[
1
0
7
2
5
0
3
6
9
]
\begin{bmatrix}1 & 0 & 7\\ 2 & 5 & 0 \\3 & 6 & 9\end{bmatrix}
⎣⎡123056709⎦⎤ |
+ | 矩阵加法 | [6 3] + 2 的结果为[8 5] [6 5] + [4 8] 的结果为[10 13] |
- | 矩阵减法 | [6 3] - 2 的结果为[4 1] [6 5] - [4 8] 的结果为[2 -3] |
* | 矩阵相乘 | [3 5] * [4 8]' 的结果为52 |
.* | 矩阵的内积 | [3 5] .* [4 8] 的结果为[12 40] |
/ | 矩阵的除法 | [2 5] / [4 8] 的结果为3/5 |
./ | 矩阵元素的左除法 | [2 5] ./ [4 8] 的结果为[1/2 5/8] |
.\ | 矩阵元素的右除法 | [2 5] .\ [4 8] 的结果为[2 8/5] |
^ | 矩阵的幂 | [2 5; 2 5]^2 等价于[2 5; 2 5] * [2 5; 2 5] ,结果为[14 25; 14 25] |
.^ | 矩阵元素的幂 | [3 5].^[2 4] 等价于[3^2 5^4] ,结果为[9 625] |
1.2.7 矩阵常用函数
函数 | 说明 |
---|---|
max() | 找到矩阵中每一列元素的最大值 注:如果想找到矩阵的最大元素,需使用两次max,如 max(max(A)) |
min() | 找到矩阵中每一列元素的最小值 注:如果想找到矩阵的最小元素,需使用两次min,如 min(min(A)) |
sum() | 求出矩阵每列的元素和 注:如果想求整个矩阵的元素和,需使用两次sum,如 sum(sum(A)) |
mean() | 求出矩阵每列的平均值 注:如果想求整个矩阵的平均值,需使用两次mean,如 mean(mean(A)) |
sort() | 对矩阵中每一列进行从小到大排序 |
sortrows() | 将每一行绑定在一起,形成一个数值,再由数值大小以行为单位进行从小到大排序 |
size() | 输出矩阵的大小(行数,列数) |
length() | 输出矩阵的行数 |
find(A==n) | 输出矩阵A中等于数值n的元素下标 |