Matlab:数组
(一)基本运算与矩阵输入
1 创建数组
一维数组称为向量,二维数组称为矩阵
可以使用中括号“[ ]”,直接输入数值来创建数组,也可以通过MATLAB内置函数来创建特殊数组
1.1 直接创建
元素间使用空格或者英文逗号间隔,使用英文分号执行换行操作
1 | >>A=[1 2 3;4 5 6;7 8 9] |
1.2 内置函数创建特殊数组
- zeros(m,n) —-创建m×n阶全零矩阵
- ones(m,n) —-创建m×n阶全幺阵
- rand(m,n) —-生成一个由介于 0 和 1 之间的均匀分布的随机数组成的 m×n 矩阵
- randi(imax,n) —-生成一个元素在区间 [1,imax] 的均匀离散分布的伪随机整数的 n×n 矩阵
- magic(n) —-生成n×n阶魔方矩阵
- diag(A) —-返回一个列向量,其元素为由矩阵A的对角线元素
- diag(V) —-V是一个向量(行向量、列向量结果相同),返回一个对角矩阵,其对角元素为向量V的元素
zeros(m,n) —-创建m×n阶全零矩阵
1 | >> zeros(2,3) |
ones(m,n) —-创建m×n阶全幺阵
1 | >> ones(2,3) |
rand(m,n) —-生成一个由介于 0 和 1 之间的均匀分布的随机数组成的 m×n 矩阵
1 | >> rand(2,3) |
randi(imax,n) —-生成一个元素在区间 [1,imax] 的均匀离散分布的伪随机整数的 n×n 矩阵
1 | >> randi(5,3) |
magic(n) —-生成n×n阶魔方矩阵
1 | >> A=magic(3) |
diag(A) —-返回一个列向量,其元素为由矩阵A的对角线元素
1 | >> diag(A) |
diag(V) —-V是一个向量(行向量、列向量结果相同),返回一个对角矩阵,其对角元素为向量V的元素
1 | >> A=[1 2 3]; |
2 数组索引(Index)
数组中的每个元素都有两个属性:
1)元素的值
2)元素在数组中的位置
1 | **注意:MATLAB数组索引从1开始!而不是0!!** |
以三阶魔方矩阵 A=[8 1 6;3 5 7;4 9 2] 为例
- A(id) —-按列索引数组第id个元素
- A(m,n) —-返回数组A第m行第n列对应的元素
- A([l m n]) —-返回一个行向量,元素为数组A第l、m、n个元素
- A(l m; p q) —-返回一个2×2阶矩阵,其元素第一行为数组A第l、m个元素,第二行为数组A第p、q个元素
- A(m, : ) —-返回一个行向量,其元素为数组A第m行元素
- A(:, n) —-返回一个列向量,其元素为数组A第n列元素
- A([m n], p) —-返回数组A第m行、第n列与第p行相交的元素
A(id) —-按列索引数组第id个元素
1 | >> A=magic(3) |
A(m,n) —-返回数组A第m行第n列对应的元素
1 | >> A(2,3) |
A([l m n]) —-返回一个行向量,元素为数组A第l、m、n个元素
1 | >> A([1,3,5]) |
A(l m; p q) —-返回一个2×2阶矩阵,其元素第一行为数组A第l、m个元素,第二行为数组A第p、q个元素
1 | >> A([1 3;1 3]) |
A([m,n], [p,q]) —-返回一个2×2阶矩阵,其元素为数组A第m行、第n行与第p列、第q列相交的元素,即[m,n]代表行(row),[p,q]代表列(col)
1 | >> A([1 3],[1 3]) |
A(m,:) —-返回一个行向量,其元素为数组A第m行元素
1 | >> A(2,:) |
A(:, n) —-返回一个列向量,其元素为数组A第n列元素
1 | >> A(:,2) |
A([m n], p) —- 返回数组A第m行、第n列与第p行相交的元素
1 | >> A([1 3], 2) |
3 数组运算
3.1 等差数组
A(l: m: n) —-生成一个等差数组,首项=l,等差=m(默认为1),尾项=n
1 | >> A=[1:9] |
3.2 数组串联(合并)
C=[A B] ,C=[A; B] —-将维度一致的两个数组合并为一个数组
1 | >> A=[1 2; 3 4] |
3.3 删除元素(删除某一行、某一列)
A(m)=[ ] —-删除数组A第m个元素,并返回一个行向量
1 | >> A=magic(3) |
A(m, :)=[ ] —-返回删除数组A第m行后缩短的数组(列操作同理)
1 | >> A=magic(3) |
3.4 数组操作
1 | 数组操作符:+ - * / ^ . ' |
1. 数组A与标量a
- A+a, A-a —-数组A的每个元素加 a、减 a
- A*a —-数组A每个元素乘 a
- A.*a —-数组A每个元素乘 a
- A/a —-数组A每个元素除以 a
- A./a —-数组A每个元素除以 a
- A^a —-a个数组A相乘
- A.^a —-数组A的每个元素进行a次方
1 | >> A=magic(3) |
2. 数组与数组
- A+B, A-B —-数组A、B对应元素向加减
- A*B —-数组A左乘数组B
- A.*B —-数组A与数组B对应元素相乘
- A/B —-A/B≈A_inv(B),其中A_inv(B)中的B必须为方阵
- A./B —-数组A除以数组B的对应元素
1 | >> A=magic(3) |
3.矩阵运算
- B’ —-矩阵B转置
- rank(B) —-矩阵B的秩
- inv(A) —-方阵A求逆
- det() —-方阵A的行列式
- size(A) —- [[matlab:获取数组的大小]]返回一个行向量,其元素是 A 的相应维度的长度,即A的大小
- length(A) —-返回A中最大维度的长度。对于向量,长度仅仅是元素数量。对于具有更多维度的数据,长度为 max(size(X))。空数组的长度为零。
- D=eig(A) —-返回方阵A的特征值D
- [V D]=eig(A) —-返回方阵A的特征值D和特征向量V
1 | A=magic(3) |