矩阵和数组相关函数
基本输入函数
函数名 | 作用 |
---|---|
ans | 最近计算的答案 |
clc | 清空命令行窗口 |
diary | 将命令行窗口文本记录到日志文件中 |
format | 设置命令行窗口输出显示格式 |
home | 发送光标复位 |
iskeyword | 确定输入是否为 MATLAB 关键字 |
more | 控制命令行窗口中的分页输出 |
命令行窗口 | 选择命令行窗口 |
命令历史记录窗口 | 打开命令历史记录窗口 |
创建与合并数组
函数名 | 作用 |
---|---|
zeros | 创建全零数组 |
ones | 创建全部为 1 的数组 |
rand | 均匀分布的随机数 |
true | 逻辑值 1(真) |
false | 逻辑 0(假) |
eye | 单位矩阵 |
diag | 创建对角矩阵或获取矩阵的对角元素 |
blkdiag | 分块对角矩阵 |
cat | 串联数组。 |
horzcat | 水平串联数组 |
vertcat | 垂直串联数组 |
repelem | 重复数组元素副本 |
repmat | 重复数组副本 |
创建网格
函数名 | 作用 |
---|---|
linspace | 生成线性间距向量 |
logspace | 生成对数间距向量 |
freqspace | 频率响应的频率间距 |
meshgrid | 二维和三维网格 |
ndgrid | N 维空间中的矩形网格 |
确定大小、形状、排序
函数名 | 作用 |
---|---|
length | 最大数组维度的长度 |
size | 数组大小 |
ndims | 数组维度数目 |
numel | 数组元素的数目 |
isscalar | 确定输入是否为标量 |
issorted | 确定数组是否已排序 |
issortedrows | 确定矩阵或表的行是否已排序 |
isvector | 确定输入是否为向量 |
ismatrix | 确定输入是否为矩阵 |
isrow | 确定输入是否为行向量 |
iscolumn | 确定输入是否为列向量 |
isempty | 确定数组是否为空 |
重构与重新排列
函数名 | 作用 |
---|---|
sort | 对数组元素排序 |
sortrows | 对矩阵行或表行进行排序 |
flip | 翻转元素顺序 |
fliplr | 将数组从左向右翻转 |
flipud | 将数组从上向下翻转 |
rot90 | 将数组旋转 90 度 |
transpose | 转置向量或矩阵 |
ctranspose | 复共轭转置 |
permute | 置换数组维度 |
ipermute | 逆置换数组维度。 |
circshift | 循环平移数组 |
shiftdim | 移动数组维度 |
reshape | 重构数组 |
squeeze | 删除长度为 1 的维度 |
索引
函数名 | 作用 |
---|---|
colon | 向量创建、数组下标和 for 循环迭代 |
end | 终止代码块或指示最大数组索引 |
ind2sub | 线性索引的下标 |
sub2ind | 将下标转换为线性索引 |
矩阵和数组相关运算
数组创建
要创建每行包含四个元素的数组,请使用逗号 (,) 或空格分隔各元素。
a = [1 2 3 4]
a = 1×4
1 2 3 4
这种数组为行向量。
要创建包含多行的矩阵,请使用分号分隔各行。
a = [1 2 3; 4 5 6; 7 8 10]
a = 3×3
1 2 3
4 5 6
7 8 10
创建矩阵的另一种方法是使用 ones、zeros 或 rand 等函数。例如,创建一个由零组成的 5×1 列向量。
z = zeros(5,1)
z = 5×1
0
0
0
0
0
矩阵和数组运算
MATLAB 允许您使用单一的算术运算符或函数来处理矩阵中的所有值。
a + 10
ans = 3×3
11 12 13
14 15 16
17 18 20
sin(a)
ans = 3×3
0.8415 0.9093 0.1411
-0.7568 -0.9589 -0.2794
0.6570 0.9894 -0.5440
要转置矩阵,请使用单引号 (’):
a’
ans = 3×3
1 4 7
2 5 8
3 6 10
您可以使用 * 运算符执行标准矩阵乘法,这将计算行与列之间的内积。例如,确认矩阵乘以其逆矩阵可返回单位矩阵:
p = a*inv(a)
p = 3×3
1.0000 0 0
0.0000 1.0000 0
0.0000 -0.0000 1.0000
请注意,p 不是整数值矩阵。MATLAB 将数字存储为浮点值,算术运算可以区分实际值与其浮点表示之间的细微差别。使用 format 命令可以显示更多小数位数:
format long
p = a*inv(a)
p = 3×3
1.000000000000000 0 0
0.000000000000002 1.000000000000000 0
0.000000000000002 -0.000000000000004 1.000000000000000
使用以下命令将显示内容重置为更短格式
format short
format 仅影响数字显示,而不影响 MATLAB 对数字的计算或保存方式。
要执行元素级乘法(而非矩阵乘法),请使用 .* 运算符:
p = a.*a
p = 3×3
1 4 9
16 25 36
49 64 100
乘法、除法和幂的矩阵运算符分别具有执行元素级运算的对应数组运算符。例如,计算 a 的各个元素的三次方:
a.^3
ans = 3×3
1 8 27
64 125 216
343 512 1000
串联
串联是连接数组以便形成更大数组的过程。实际上,第一个数组是通过将其各个元素串联起来而构成的。成对的方括号 [] 即为串联运算符。
A = [a,a]
A = 3×6
1 2 3 1 2 3
4 5 6 4 5 6
7 8 10 7 8 10
使用逗号将彼此相邻的数组串联起来称为水平串联。每个数组必须具有相同的行数。同样,如果各数组具有相同的列数,则可以使用分号垂直串联。
A = [a; a]
A = 6×3
1 2 3
4 5 6
7 8 10
1 2 3
4 5 6
7 8 10
复数
复数包含实部和虚部,虚数单位是 -1 的平方根。
sqrt(-1)
ans = 0.0000 + 1.0000i
要表示复数的虚部,请使用 i 或 j。
c = [3+4i, 4+3j; -i, 10j]
c = 2×2 complex
3.0000 + 4.0000i 4.0000 + 3.0000i
0.0000 - 1.0000i 0.0000 +10.0000i