3.数组和向量
文章目录
介绍
在Matlab中,向量和矩阵主要由数组表示。
数组
数组是Matlab的核心结构。
任何变量在Matlab中都是以数组的形式存储和运算的。
分类
空数组、一行一列的标量、一行一列的向量、二维数组、多维数组
A=[1,2,3;4,5,6]
size(A)% 2 3
[rows,cols]=size(A)%rows=2;cols=3
length(A)%返回数组的最大维值-->3
普通数组、稀疏数组(稀疏矩阵)–>大部分元素为0,目的是提高数据的存储和运算效率。
创建数组
A=[1,2,3;4,5,6]
zeros(2,3)%2行3列的0矩阵
ones(2,3)%2行3列的1矩阵
rand(1,3)%0~1之间-->0.8147 0.9058 0.1270
diag(A)%[1;5]
diag(diag(A))%[1,0;0,5]
magic(2)%1到2方的2*2数组
B=[1;1]
rand(size(B))%和B行列相同的数组
[A B]%拼接
数组操作
获取、更改、写入
A=[1,2,3;4,5,6]
A(1,2)%获取-->2
A(1,2)=0%更改一行2列为0
A(3,1)=1%写入,自动扩充-->[1,0,3;4,5,6;1,0,0]
算术
A=[1,2;5,6]
A+1%[2,3;6,7]
B=[1;2]
B*2%[2;4]
A*B%矩阵乘法
A.*B%对应元素相乘
A./B%对应元素相除
逻辑运算
%比较大小
A=[5,1]
B=[1,2]
A>B%比较-->1 0
库函数sum、mean
%sum、mean
C=[1,2,3;4,5,6]
sum(C)%列求和5 7 9
mean(C)%列平均2.5000 3.5000 4.5000
min(C)
max(C)%列最大-->4 5 6
[value col]=max(C)%=[value,col]=max(C),value=[4,5,6],col=[2,2,2]
连接
A=[1 2]%=A=[1,2]
A=[1;2]
切片
A=[1 2;3 4]
A(:,1)%取出第一列,所有行
数组重排
A=1:6
reshape(A,3,2)%将A重构成一个3*2矩阵[1 4;2 5;3 6]
A=1:10
reshape([A,0,0],4,3)%重构成3*4的矩阵,最后补俩0
线性化数组
不要把线性化作为程序的一部分,它会使程序理解起来很困难,更正:
向量
不同于普通数学意义上的带有方向的量,Matlab中向量指的是对相似数据项的集合进行分组的最简单方式。
向量具备两个独立且截然不同的属性:数值及其在向量中的位置。
向量是一维的
创建向量
A=[1,2,3]
A=[1 2 3]
B=[1:2:4]%起始值:步长(可省略):终止值-->1 3
C=linspace(1,10,3)%起始,终止,个数-->1.0000 5.5000 10.0000
D=[3]%不是标量,这代表具有单位长度的向量
E=[1:1:99]%工作区value栏显示1*99double
zeros(1,3)%0 0 0
ones(1,3)%1 1 1
rand(1,3)%均匀随机数0.7060 0.0318 0.2769
randn(1,3)%正态分布随机数-0.8095 -2.9443 1.4384
向量尺寸
A=[1,2,3]
size(A)%1 3
length(A)%行数和列数的最大值3
向量索引
数值索引
A=[1,2,3]
A(2)%2
A(2)=3%1 3 3
A(5)=1%扩展1 3 3 0 1
逻辑索引
mask=[true,false,true,true]%1 0 1 1
A=[1 2 3 4]
A(mask)%1 3 4
缩短向量
A=[1 2 3 4]
A(2)=[]%移除第二个,1 3 4
向量操作
算术操作
A=[1 2 3 4]
A+5%6 7 8 9
%其他的+ - .* ./同理,不再列举
逻辑操作
%判断
A=[1 2 3 4]
B=[1 3 7 2]
A>3%0 0 0 1
A>B%0 0 0 1
%单操作符与&或|
A=[true false true]
B=[false false true]
A&B%0 0 1
A|B%1 0 1
%双操作符与&&或||
2&&0%0
2||0%1
find()函数得到对应逻辑向量中元素为真的向量元素的索引值。
A=[1 2 3 5]
find(A>=3)%3 4
B=~[true false false]%取非0 1 1
库函数
%sum() mean()
%min() max()
[value where]=max([1 2 5 1])%value =5;where =3
连接
A=[1 3]
B=[2 3 1]
[A B]%1 3 2 3 1
切片
A=[1 2 3 4]
A([true false true false])%1 3
A(2:2:4)%起始:步长:终止-->2 4
连接
A=[1 3]
B=[2 3 1]
[A B]%1 3 2 3 1
切片
A=[1 2 3 4]
A([true false true false])%1 3
A(2:2:4)%起始:步长:终止-->2 4
参考文献
王贵财《MATLAB从入门到精通》