matlab 学习之矩阵(二)

描述矩阵和数组

size 描述矩阵的大小
length 最大维的长度
ndims 维数
numel 元素个数
isempty 判断是否为空
ismatrix 判断是否为矩阵
isscalar 判断是否是一个标量
isvector 判断是否是一个向量
issorted 判断是否已排序

获取矩阵元素

编号索引
线性索引
冒号
end

矩阵操作

排序 sort/sortrows
转置 rot90/transpose
翻转 fliplr/flip/flipud
重塑 reshape/squeeze

代码

A=rand(3,5)

A =

0.8147    0.9134    0.2785    0.9649    0.9572
0.9058    0.6324    0.5469    0.1576    0.4854
0.1270    0.0975    0.9575    0.9706    0.8003

B=size(A)

B =

 3     5

3行5列

B=length(A)

B =

 5

最大维的长度

ndims(A)

ans =

 2

维数:矩阵是二维

numel(A)

ans =

15

元素个数 3X5

isempty(A)

ans =

logical

0
A不是空矩阵

ismatrix(A)

ans =

logical

1
A是矩阵

D=repmat(3,size(A))

D =

 3     3     3     3     3
 3     3     3     3     3
 3     3     3     3     3

把元素3复制成A的大小的矩阵

A=rand(1,10)

A =

列 1 至 9

0.1419    0.4218    0.9157    0.7922    0.9595    0.6557    0.0357    0.8491    0.9340

列 10

0.6787

B=rand(3,4)

B =

0.7577    0.6555    0.0318    0.0971
0.7431    0.1712    0.2769    0.8235
0.3922    0.7060    0.0462    0.6948

sort(A)

ans =

列 1 至 9

0.0357    0.1419    0.4218    0.6557    0.6787    0.7922    0.8491    0.9157    0.9340

列 10

0.9595

sort默认从低到高排序(一维)

sort(B)

ans =

0.3922    0.1712    0.0318    0.0971
0.7431    0.6555    0.0462    0.6948
0.7577    0.7060    0.2769    0.8235

B是二维,sort(B)是默认每列从低到高排列

sort(B,2)

ans =

0.0318    0.0971    0.6555    0.7577
0.1712    0.2769    0.7431    0.8235
0.0462    0.3922    0.6948    0.7060

指定是第二列排序

sort(B,2,‘descend’)

ans =

0.7577    0.6555    0.0971    0.0318
0.8235    0.7431    0.2769    0.1712
0.7060    0.6948    0.3922    0.0462

可以指定升序或降序

sortrows(A)

ans =

列 1 至 9

0.1419    0.4218    0.9157    0.7922    0.9595    0.6557    0.0357    0.8491    0.9340

列 10

0.6787

sortrows(B)

ans =

0.3922    0.7060    0.0462    0.6948
0.7431    0.1712    0.2769    0.8235
0.7577    0.6555    0.0318    0.0971

默认第一列元素排序

sortrows(B,3)

ans =

0.7577    0.6555    0.0318    0.0971
0.3922    0.7060    0.0462    0.6948
0.7431    0.1712    0.2769    0.8235

第三列元素排序

sortrows(B,3,‘descend’)

ans =

0.7431    0.1712    0.2769    0.8235
0.3922    0.7060    0.0462    0.6948
0.7577    0.6555    0.0318    0.0971

sortrows(B,3,‘ascend’)

ans =

0.7577    0.6555    0.0318    0.0971
0.3922    0.7060    0.0462    0.6948
0.7431    0.1712    0.2769    0.8235

flip(B)

ans =

0.3922    0.7060    0.0462    0.6948
0.7431    0.1712    0.2769    0.8235
0.7577    0.6555    0.0318    0.0971

默认上下翻转,第一行变最后一行

B

B =

0.7577    0.6555    0.0318    0.0971
0.7431    0.1712    0.2769    0.8235
0.3922    0.7060    0.0462    0.6948

fliplr(B)

ans =

0.0971    0.0318    0.6555    0.7577
0.8235    0.2769    0.1712    0.7431
0.6948    0.0462    0.7060    0.3922

左右翻转,第一列和最后一列翻转

flipud(B)

ans =

0.3922    0.7060    0.0462    0.6948
0.7431    0.1712    0.2769    0.8235
0.7577    0.6555    0.0318    0.0971

flip(B,2)
2指左右翻转
ans =

0.0971    0.0318    0.6555    0.7577
0.8235    0.2769    0.1712    0.7431
0.6948    0.0462    0.7060    0.3922

rot90(A)

ans =

0.6787
0.9340
0.8491
0.0357
0.6557
0.9595
0.7922
0.9157
0.4218
0.1419

旋转90度

transpose(A)

ans =

0.1419
0.4218
0.9157
0.7922
0.9595
0.6557
0.0357
0.8491
0.9340
0.6787

转置

C=rand(2,6)

C =

0.3171    0.0344    0.3816    0.7952    0.4898    0.6463
0.9502    0.4387    0.7655    0.1869    0.4456    0.7094

D=reshape(C,3,4)

D =

0.3171    0.4387    0.7952    0.4456
0.9502    0.3816    0.1869    0.6463
0.0344    0.7655    0.4898    0.7094

C=rand(2,6)*5

C =

3.7734    3.3985    0.8131    2.4918    1.7019    1.1191
1.3801    3.2755    0.5950    4.7987    2.9263    3.7563

D=mapminmax( C )

D =

1.0000    0.7467   -1.0000    0.1342   -0.3995   -0.7933

-0.6265 0.2753 -1.0000 1.0000 0.1092 0.5041
mapminmax将元素值归一化到-1到1

D=C( : )

D =

3.7734
1.3801
3.3985
3.2755
0.8131
0.5950
2.4918
4.7987
1.7019
2.9263
1.1191
3.7563

(:)将矩阵元素变成向量形式

F=mapminmax(D)

F =

3.7734
1.3801
3.3985
3.2755
0.8131
0.5950
2.4918
4.7987
1.7019
2.9263
1.1191
3.7563

E=mapminmax(D’)

E =

列 1 至 9

0.5122   -0.6265    0.3338    0.2753   -0.8962   -1.0000   -0.0975    1.0000   -0.4734

列 10 至 12

0.1092   -0.7507    0.5041

G=reshape(D,2,6)

G =

3.7734    3.3985    0.8131    2.4918    1.7019    1.1191
1.3801    3.2755    0.5950    4.7987    2.9263    3.7563

G=reshape(E,2,6)

G =

0.5122    0.3338   -0.8962   -0.0975   -0.4734   -0.7507

-0.6265 0.2753 -1.0000 1.0000 0.1092 0.5041

B

B =

0.7577    0.6555    0.0318    0.0971
0.7431    0.1712    0.2769    0.8235
0.3922    0.7060    0.0462    0.6948

B(1,2)

ans =

0.6555

B(6)

ans =

0.7060

线性索引:注意编号顺序

sub2ind(size(B),1,2)

ans =

 4

B(sub2ind(size(B),1,2))

ans =

0.6555

sub2ind可以获取编号

A=magic(4)

A =

16     2     3    13
 5    11    10     8
 9     7     6    12
 4    14    15     1

方矩阵且每一行的和相等

A(1,1)+A(1,2)+A(1,3)+A(1,4)

ans =

34

sum(A(1:4,4))

ans =

34

B=A

B =

16     2     3    13
 5    11    10     8
 9     7     6    12
 4    14    15     1

B(1:3:16)

ans =

16     4     7    10    13     1

冒号获取元素,从1到16个元素隔3-1个取出一个

B(1:3:16)=-10

B =

-10 2 3 -10
5 11 -10 8
9 -10 6 12
-10 14 15 -10

A( : )

ans =

16
 5
 9
 4
 2
11
 7
14
 3
10
 6
15
13
 8
12
 1

B(1:3:end)=-10

B =

-10 2 3 -10
5 11 -10 8
9 -10 6 12
-10 14 15 -10
不知道有多少个元素的情况下,可以用end

思维导图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值