Matlab 中数组元素引⽤——三种⽅法
1.Matlab 中数组元素引⽤有三种⽅法
注意:在使⽤这三种⽅法之前,⼤家头脑⼀定要清晰的记住,Matlab 中数组元素是按列存储(与Fortran ⼀样),⽐如说下⾯的⼆维数组Matlab 的存储顺序是8,3,4,1,5,9,6,7,2,也就是说先⾏后列,对于3维数组呢,就是先⾏后列再页对应个元素的索引和下标分别为 从上⾯的例⼦中已经很清晰的说明了下标和索引的区别了,也就是说Matlab 为每个元素分配了⼀个唯⼀识别的ID(即index)
2.下标法引⽤
A(ii,jj):其中ii 和jj 可以是⼀维向量、标量、“:”号或者“end”
⼤家对下标估计⽐较熟悉,由于在C 语⾔中接触过,但是我这⾥需要强调的是,Matlab 的下标是可以多⾏多列同时引⽤的,⽽像C 语⾔等⼀次只能引⽤⼀个,⽐如
举⼏个例⼦:1
2
31 .下标法(subscripts)2 .索引法(index)3 .布尔法(Boolean)1
2
3
4A= 8 1 6 3 5 7 4 9 21
2
3
4
5
6
7
8
9
10Element Index Subscripts 8 1 ( 1 , 1 )3 2 ( 2 , 1 )4 3 ( 3 , 1 )1 4 ( 1 , 2 )5 5 ( 2 , 2 )9 6 ( 3 , 2 )6 7 ( 1 , 3 )7 8 ( 2 , 3 )2 9 ( 3 , 3 )
1
2
3
4A( 2 : 3 , 3 :- 1 : 1 )表⽰引⽤数组中的 2 ~ 3 ⾏, 3 ~ 1 列对应的元素A(:,end)表⽰引⽤最后⼀列元素,“:”表⽰所有列或⾏,“end”表⽰最后⼀列或列,“end-n”表⽰倒数第n ⾏或列A( 1 ,end- 1 )表⽰引⽤第 1 ⾏倒数第 2 个元素A([ 2 1 3 3 ],[ 1 1 2 2 1 ])表⽰引⽤按两个向量引⽤指定的元素,即A 中的第 2 , 1 , 3 , 3 ⾏和第 1 , 1 , 2 , 2 , 1 列对应的元素
2.索引法引⽤(说⽩了索引就是存储顺序)
A(index):index 可以是任意的数组,index 的元素必须是正整数,且不⼤于numel(A),返回的是⼀个尺⼨与index ⼀样的数组
下标和索引之间可以通过ind2sub 和sub2ind 函数相互转换,具体可以看帮助,很简单
[I,J] = ind2sub(siz,IND)
IND = sub2ind(siz,I,J)
还有使⽤A(:)就可以将数组A 转换为列向量
A(8):表⽰引⽤A 的第8个元素
B=A([1 10 5 2 2 1 3]):表⽰依次引⽤A 的第1,10,5,2,2,1,3个元素,返回与index 尺⼨相同的数组,也就是说size(B)=size(index)
A([2 5 9;1 1 1;8 5 6]):返回的时侯是⼀个3*3的矩阵1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32>>A=magic( 3 ) A = 8 1 6 3 5 7 4 9 2 >>A( 2 : 3 , 3 :- 1 : 1 ) ans = 7 5 3 2 9 4 >>A(:,end) ans = 6 7 2 >>A( 1 ,end- 1 ) ans = 1 >>A([ 2 1 3 3 ],[ 1 1 2 2 1 ]) ans = 3 3 5 5 3 8 8 1 1 8 4 4 9 9 4 4 4 9 9 4
3.布尔法引⽤
matlab数组赋值A(X):X 是⼀个有0和1组成布尔型数据,且size(A)=size(X),对应位置为1则留下该数据,0则去掉,最后按A 中的存储顺序,返回⼀个列向量
假如说A 是3*3的数组
A(logical([1 0 0;0 1 0;0 0 1])):表⽰引⽤了数组A 的对⾓线元素,注意必须使⽤logical 将0/1数组转换为布尔型1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25>>A=magic( 5 )%括号中为索引值 A = 17 ( 1 ) 24 ( 6 ) 1 ( 11 ) 8 ( 16 ) 15 ( 21 ) 23 ( 2 ) 5 ( 7 ) 7 ( 12 ) 14 ( 17 ) 16 ( 22 ) 4 ( 3 ) 6 ( 8 ) 13 ( 13 ) 20 ( 18 ) 22 ( 23 ) 10 ( 4 ) 12 ( 9 ) 19 ( 14 ) 21 ( 19 ) 3 ( 24 ) 11 ( 5 ) 18 ( 10 ) 25 ( 15 ) 2 ( 20 ) 9 ( 25 ) >>A( 8 ) ans = 6 >>A([ 1 10 5 2 2 1 3 ]) ans = 17 18 11 23 23 17 4 >>A([ 2 5 9 ; 1 1 1 ; 8 5 6 ]) ans = 23 11 12 17 17 17 6 11 24
作者:
出处:
博客⽂章⼤部分为原创,版权归作者和博客园共有,欢迎转载。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论