数字图像处理_冈萨雷斯_数组索引


1.向量索引

维数为1xN的数组称为行向量。行向量中元素的存取是使用一维索引进行的。因此, v(1)是向量v的第一个元素,v(2)是第二个元素,依次类推。MATLAB中向量的元素使用方括号括起,并由空格或逗号隔开。
使用转置运算符( .’)可将行向量转换为列向量,例如,

代码示例:

v = [1 3 5 7 9]
w = v.'

运行结果:
在这里插入图片描述

要存取元素的数据块,我们可使用MATLAB的冒号。
已知一个一维数组v = [1 3 5 7 9],现分别进行如下存取元素的操作:

v(1:3)%要存取v的前三个元素

ans =

 1     3     5

v(2:4)%存取第二个到第四个元素

ans =

 3     5     7

v(3:end)%存取第三个到最后一个元素

ans =

 5     7     9

v(:)%产生一个列向量

ans =

 1
 3
 5
 7
 9

v(1:2:end)%索引从1开始计数,步长为2,直到最后一个元素时停止

ans =

 1     5     9

v(end:-2:1)%索引从最后一个元素开始计数,步长为-2,直到第一个元素时停止

ans =

 9     5     1

2.矩阵索引

在MATLAB中,矩阵可以很方便地用-列被方括号括起并用分号隔开的行向量表示。
二维矩阵:

A = [1 2 3;4 5 6;7 8 9]

A =

 1     2     3
 4     5     6
 7     8     9

从矩阵中选取元素和从向量中选取元素是一样的,但我们现在需要两个索引:一个用于确定行位置,另一个用于确定相应的列位置。

A(2,3)%提取第2行第3列的元素

ans =

 6

C3 = A(:,3)%提取出矩阵的第三列,冒号本身的作用相当于语句A (1:3,3)

C3 =

 3
 6
 9

R2 = A(2,:)%提取出矩阵的第二行

T2 = A(1:2,1:3)%提取出矩阵的前两行

T2 =

 1     2     3
 4     5     6

使用end的运算与向量索引类似

A(end,end)       %ans = 9
A(end,end-2)      %ans = 7
A(2:end,end:-2:1)   %ans = 6 4;9 7

E = A([1 3],[2 3])

E =

 2     3
 8     9

符号A([a b], [c d])从A中挑选出坐标为(行a,列c),(行a,列d),(行b,列c)和(行b,列d)的元素。因此,当我们令E=A([1 3],[23])时,我们正在选择A中的如下元素:行1列2中的元素,行第列3中的元素,行3列2中的元素,以及行3列3中的元素。


使用索引矩阵的一种特别有用的寻址方法

A = [1 2 3;4 5 6;7 8 9]
D= logical ( [ 1 0 0; 0 0 1;0 0 0])
A(D)

ans =

 1
 6

在为矩阵做索引时,单个引号会选择该数组的全部元素(以逐列的方式),并将这些元素排列成一个列向量的形式。例如,
A = [1 2 3;4 5 6;7 8 9]
T2 = A(1:2,1:3)
v = T2(:)

v =

 1
 4
 2
 5
 3
 6

冒号的使用是很有帮助的,如我们想要求一个矩阵的所有元素之和时,可以使用语句;
s = sum(A(:))

s =

45

本书中经常会用到 operation (A,dim) 的操作,operation表示MATLAB中的一种可用操作,A是一个数组,dim是一个标量。例如,假设A是一个大小为M X N的数组。命令

 k = size (A,1) ;

沿A的第一个维数(在MATLAB中定义为垂直方向)给出A的大小。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值