![MATLAB R2022a完全自学一本通](https://wfqqreader-1252317822.image.myqcloud.com/cover/854/47548854/b_47548854.jpg)
2.2.4 矩阵下标引用
在MATLAB中,普通二维数组元素的数字索引分为双下标索引和单下标索引。双下标索引是通过一个二元数组对来对应元素在矩阵中的行、列位置的,如A(2,3)表示矩阵A中第2行第3列的元素。
单下标索引的方式采用列元素优先的原则,先对m行n列的矩阵按列排序进行重组,成为一维数组,再取新的一维数组中的元素位置对应的值作为元素在原矩阵中的单下标。
例如,对于4×4的矩阵,A(7)表示矩阵A中第3行第2列的元素,而A(13)表示矩阵A中第1行第4列的元素。
1.通过矩阵下标访问单个矩阵元素
常用的矩阵索引表达式如表2-14所示。
表2-14 常用的矩阵索引表达式
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_67_1.jpg?sign=1738927608-AhvHoJAMlNDKNC8lvTD5PNqnBwYP81LZ-0-a4632cca0ae47d362c38583d30da5780)
例2-35:矩阵下标引用示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_67_2.jpg?sign=1738927608-kzmQESygXSLXt7ATtYISfgQDB527MnqG-0-88000d9f07c233c771cc285f69ddfc56)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_67_3.jpg?sign=1738927608-VeZrCyTzc54txEkUjicfKnqmHaFTxwV6-0-1f6b42afa71fbde70403573bc8a84259)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_68_1.jpg?sign=1738927608-kWRpggPgz9fkeGtDuujP1Ck2FoKAUZif-0-11c9c9f59b1fdc0e9cfedc2a2be2f2fd)
2.线性引用矩阵元素
矩阵中某一元素的单下标索引值和双下标索引值可以通过MATLAB内部函数进行转换,句法形式为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_68_2.jpg?sign=1738927608-agF07Blx49XPdbPao5iWhiTHjcyITMSx-0-f6f0f8cc08c0177b32b96012fc5377c5)
上述代码的功能为将双下标索引值转换为单下标索引值,其中,siz是一个包含两个元素的数组,代表转换矩阵的行列数,一般可以直接用size(A)表示;i与j分别是双下标索引中的行、列值;IND是转换后的单下标索引值。
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_68_3.jpg?sign=1738927608-DYpuG0yhsJHdzFh5PCaAw8XH8AOGfMUC-0-2158581ed5582f2ca9c73975c32c3284)
上述代码的功能为将单下标索引值转换为双下标索引值,各变量意义同上。
例2-36:矩阵元素单、双下标索引值转换示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_68_4.jpg?sign=1738927608-esRlkbIwFFbC5vu7cSOcpEnXzQBWgwlc-0-b2a7497f33228400bffbdcba45f0ddb8)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_68_5.jpg?sign=1738927608-T9KwmG5xVQkOrR792v1A7Pj07AVCqwO9-0-a8aa8dfbe4ed10c08a00b2b92a60733b)
3.访问多个矩阵元素
设A=magic(4),如果需要计算第4列元素的和,则按照前面介绍的方法可以用以下表达式来实现:
A(1,4)+A(2,4)+A(3,4)+A(4,4)
在下标表达式中,可以用冒号来表示矩阵的多个元素。例如,A(1:k,j)表示矩阵第j列的前k个元素。利用冒号,计算第4列元素的和可以用较简洁的式子,代码设置如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_68_6.jpg?sign=1738927608-XMmdtqrKhwOvegFFSeDhEjzjsKrfrQU4-0-5a5c280e0c5cf97810c5e365874c138b)
还有更简洁的表达方式,因为冒号本身可以表示一列或一行的所有元素,所以上式还可以写为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_68_7.jpg?sign=1738927608-VFqGfsNiUtz4QTtooat2PP1V6rQ2Vwph-0-31b4a72c1ab3e73c7ac539949c9a0f25)
在MATLAB中,提供了一个关键字end,用于表示该维中的最后一个元素,因此上式还可以改写成:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_68_8.jpg?sign=1738927608-UagxOIXAdd9wObxqy6eDR1Iob3O16Rca-0-235c3e114bd228c8edc1e265dd2995ed)
实际上,还可以用冒号来表示非相邻的多个元素。例如,在命令行窗口中输入以下语句:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_69_1.jpg?sign=1738927608-2slhwUTp0SW8rCRv0JZL6Jlrxam02Cia-0-656b68ebee2729332fc2c16401a4b7a6)
由此得到如下输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_69_2.jpg?sign=1738927608-G3WfUWn9NH2ZVtlq748BfHecaNlQcVZU-0-ad04efccbf787089485569265d0d36e4)