Matlab自学笔记六:矩阵索引的概念、下标索引、线性索引、逻辑索引、冒号和end索引、超出索引报错

1.矩阵索引的概念

如果矩阵是一个电影院,那么矩阵索引就是每个座位的编号,每个观众都可以通过这个编号找到自己的位置,同样的,通过矩阵索引可以找到每个元素的位置。

2.矩阵索引的表达方法

例如,对于1*4的矩阵A=[5 6 7 8],A中第1行第2列的元素是6,记作:

A(1,2)

那么返回值为6;

说明,索引方式是使用小括号,把行序号和列序号分别作为第一个和第二个参数,这种索引方式称为下标索引(也叫组合索引)。

3.矩阵元素的修改

例如,对于1*4的矩阵A=[5 6 7 8],修改A中第1行第2列的元素为10,记作:

A(1,2)=10

那么返回值为:A=[5 10 7 8]。

4.线性索引

除了上面所讲的下标索引,还有另一种矩阵索引方式,称为,线性索引,同样使用小括号,把元素序号作为唯一的输入参数,这里的所说的元素序号是指,把矩阵所有元素按列优先排列成一字长蛇阵,某一元素排在第n个位置,那么序号就是n;

例如,对于1*4的矩阵A=[5 6 7 8],A中第2元素是6,记作:

A(2)

那么返回值为6;

再如,对于2*3的矩阵:

B=[5 6 7

8 9 10]

B中第2元素是8,记作:

B(2)

那么返回值为8;

(此处不明白可留言交流)

5.逻辑索引

除了上述的两种索引,还有一种矩阵索引的方式,称为,逻辑索引,同样使用小括号,把逻辑矩阵作为输入参数,这里的逻辑矩阵是指,与矩阵具有相同大小,并使用逻辑值表达的逻辑矩阵,在逻辑值为真的位置,返回矩阵的元素;

程序示例如下:

b=[1 2;3 4] %创建2*2的矩阵

c=[true false;true false]  %逻辑矩阵用true和false表示

b(c)  %逻辑索引:逻辑值为真返回对应元素,为假不返回

说明,三种矩阵索引全部说完。

6.下标索引和线性索引的转换

sub2ind

ind2sub

这两个函数用的不多,不展开说,用到时自行查找用法即可,非常简单。

7.索引中冒号的妙用

下标索引中,可以使用冒号(:)表示所有行或者所有列;

程序示例如下:

a=[1 2 3

4 5 6

7 8 9]

a(1,:)  %索引第1行所有列的元素,返回[1 2 3]

a(:,1)  %索引所有行第1列的元素,返回[1;4;7]

a(:,:)  %索引所有行所有列的元素,返回整个矩阵a

8.索引中end字符的妙用

下标索引中,可以使用‘end’表示最后一行或者最后一列;

程序示例如下:

a=[1 2 3

4 5 6

7 8 9]

a(2,end)  %索引第2行最后一列的元素,返回6

a(end,3)  %索引最后一行第3列的元素,返回9

a(end,end)  %索引最后一行最后一列的元素,返回9

9.矩阵索引综合应用实例

a=[1 2 3

4 5 6

7 8 9]

a(1,2:3)  %第1行,第2-3列,返回[2 3]

a(2,[1 3])  %第2行,第1列和第3列,返回[4 6]

a(3,2:end)  %第3行,第2到最后一列,返回[8 9]

10.超出矩阵索引报错

a=[1 2 3

4 5 6

7 8 9]

a(3,4)  %索引第3行第4列的元素

报错,提示:超出矩阵范围,这是初学者常犯之错误;从以往的Matlab编程答疑经历来看,很多同学都理不清;

这样的问题没有典型案例,因为每个同学的程序都不一样,但问题的根源是一样的,就是上述这么简单;排查纠错的关键在于:编程逻辑要清晰!

End

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

freexyn

码字不易,谢谢鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值