数组是组织成行和列的数据值的组合。
数组可以分为向量和矩阵。
向量通常用来描述只有一维的数组;而矩阵用来描述二维或者多维的数组。
数组在内存中存储是按列存储的。
% array1为一维数组
array1=[1 2 3 4]
% array2为一个2*3的数组 ;分开不同的行 列之间空格隔开
array2=[1 2 3;4 5 6]
运行结果:
冒号运算符 first:incr:last
其中first是第一个值,incr是步进增量(默认值为1,若增量为1,可以忽略不写),last代表最后一个值要小于last
冒号运算符经常与转置运算符(’)结合使用,用来初始化列向量和更复杂的矩阵。
x=1:2:10
f=[1:4]
g=[1:2:9]'
h=[f' f']
e=[1:5;2:3:15;-2:0.5:0]
运行结果:
函数zeros用于创建任何大小的全零数组;
函数ones用于生成全1数组;
函数eye用于生成单位矩阵(所有对角线元素为1,非对角线元素为0);
函数size返回数组中的行数和列数。
a=zeros(2)
b=zeros(2,3)
c=[1 2;3 4];
d=zeros(size(c))
运行结果:
用于初始化变量的常用MATLAB函数
函数 | 作用 |
---|---|
zeros(n) | 生成n*n大小的全0矩阵 |
zeros(m,n) | 生成m*n大小的全0矩阵 |
zeros(size(arr)) | 生成与arr大小相同的全0矩阵 |
ones(n) | 生成n*n大小的全1矩阵 |
ones(m,n) | 生成m*n大小的全1矩阵 |
ones(size(arr)) | 生成与arr大小相同的全1矩阵 |
eye(n) | 生成n*n大小的单位矩阵 |
eye(m,n) | 生成m*n大小的单位矩阵 |
diag(V) | 生成对角矩阵,V为一个行向量,向量中元素的个数等于行数 |
length(arr) | 返回向量的长度,或二维数组的最长维数 |
size(arr) | 返回arr的行数和列数 |
A=[1 21 6;5 17 9;31 2 7]
% 数组在内存中存储是按列存储
a=A(8)
% A(1) A(3) A(5)成了一个一维数组
b=A([1 3 5])
% A(1)A(2)为第一行;A(1)A(3)为第二行
c=A([1 2;1 3])
% 数组A中第三行第二列的元素
d=A(3,2)
% [1 2]为行;[1 3]为列;把第一行第二行圈起来,把第一列第三列圈起来,交集即为结果
e=A([1 2],[1 3])
运行结果:
A=[1 21 6;5 17 9;31 2 7]
% a为A的第三行所有元素
a=A(3,:)
% 删除A的第三行
A(3,:)=[];
A
运行结果:
常用的数组和矩阵运算
运算 | MATLAB形式 | 说明 |
---|---|---|
数组加 | a+b | 数组加和矩阵加是相同的。a、b两者结构相同,对应元素相加 |
数组减 | a-b | 数组加和矩阵减是相同的。a、b两者结构相同,对应元素相减 |
数组乘 | a.*b | a和b逐元素相乘。两者结构相同,或其中之一为标量 |
矩阵乘 | a*b | a和b的矩阵乘法。a的列数等于b的行数 |
数组右除 | a./b | a和b逐元素相除:a(i,j)/b(i,j)。两者结构相同,或其中之一为标量 |
数组左除 | a.\b | a和b逐元素相除:b(i,j)/a(i,j)。两者结构相同,或其中之一为标量 |
矩阵右除 | a/b | 矩阵右除定义为a*inv(b),其中inv(b)为矩阵b的逆运算 |
矩阵左除 | a\b | 矩阵左除定义为inv(a)*b,其中inv(a)为矩阵a的逆运算 |
数组幂 | a.^b | a和b逐元素求幂。两者结构相同,或其中之一为标量 |
转置矩阵 | a’ | a的行列互换 |
增广矩阵 | [a b] | a(m * n1) 和 b(m * n2)的行数相同,生成新矩阵c(m*(n1+n2)) |
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删