MATLAB知识点:矩阵元素的引用

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇------数学建模清风主讲》。​

MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili


节选自第3章 3.3.2 矩阵元素的引用

在讲解矩阵元素的引用之前,我们先来回顾一下矩阵的表示方式:

上方给出了一个m行n列的矩阵,对于第i行第j列的元素,我们用表示。

因此,我们可以使用矩阵元素所处的行(row)和列(column)来进行引用矩阵的某一个元素,方式为:a(row_ind, column_ind).

这里的row_ind表示要引用的元素的行索引,column_ind表示列索引。如果row_ind和column_ind都是一个常数,则表示提取矩阵中的单个元素;如果row_ind或column_ind是包含有多个元素的向量,则表示同时提取多个位置的元素。与向量类似,end也可以用来替代最后一个索引,通常和冒号法一起使用。

下面我们来举两个例子,大家也可以打开本节的配套代码学习:"code_3_3_2"。

前面我们学过,可以使用length函数和numel函数来计算向量中包含的元素个数。那么,怎样计算一个矩阵的大小呢?我们可以使用size函数,它有两种常见的用法:

(1)size(A)返回一个行向量,其元素是A的各维度的长度。若A是一个3×4的矩阵,则size(A)返回向量[3 4];如果让[r,c] = size(A),那么r = 3,c = 4。

(2)size(A,dim)返回在维度dim上的长度。dim = 1时表示行;dim = 2时表示列。若A是一个3×4的矩阵,则size(A,1)返回3,size(A,2)返回4。

(length函数和numel函数也可以用在矩阵上。length函数会返回行和列的较大值:对上面的A矩阵,length(A)返回4;numel函数会返回矩阵中元素的总数,numel(A) 返回12)

有时候我们需要取出矩阵的某一行或者某一列。以取出矩阵A的第一行为例,我们可以使用代码A(1, 1:end),即row_ind取1表示第一行,column_ind取1:end表示从1到最后一列的索引。这时候我们可以直接将其简写为:A(1, :),逗号后面是列索引的位置,加一个冒号就表示取出每一列的元素。同理,要取第一列的所有元素,我们可以使用代码:A(:, 1).

总结:

  • A(:, n) 表示矩阵A的第n列的所有元素。

  • A(m, :) 表示矩阵A的第m行的所有元素。

练习:

前面我们介绍的是对矩阵的双下标进行索引,即同时指定行索引和列索引,中间用逗号隔开。有同学会问,我们能不能使用单个下标对矩阵进行索引呢?在MATLAB中是可以的,这种单下标的索引 方法称为线性索引

事实上,在MATLAB中,矩阵的数据在计算机的内存中被存储为单列。以下图为例,下面的矩阵虽然显示为 3×3 矩阵,但MATLAB在内存中将它存储为单列,由它的各列顺次连接而成。例如,第2行第2列的元素的线性索引为5,第2行第3列的元素的线性索引为8。

我们可以利用线性索引来取出矩阵中的元素,尽管这种方式并不那么直观。

另外,A(:) 命令可以将A 中的所有元素按照线性索引的顺序重构成一个列向量。

最后,sub2ind 和ind2sub 函数可用于在矩阵的原始索引( 双下标) 和线性索引 之间进行转换。他们的功能刚好相反,sub2ind 将矩阵的下标转换为线性索引;ind2sub 将线性索引转换为下标。

(1) ind = sub2ind(sz,row,col) 针对大小为 sz 的矩阵返回由 row 和 col 指定的行列下标的对应线性索引 ind。此处,sz 是包含两个元素的向量,其中 sz(1) 指定行数,sz(2) 指定列数。

(2) [row,col] = ind2sub(sz,ind) 返回数组 row 和 col,其中包含与大小为 sz 的矩阵的线性索引 ind 对应的等效行和列下标。此处,sz 是包含两个元素的向量,其中 sz(1) 指定行数,sz(2) 指定列数。

我们举两个例子:

相关推荐
玩电脑的辣条哥2 小时前
Python如何播放本地音乐并在web页面播放
开发语言·前端·python
ll7788115 小时前
LeetCode每日精进:20.有效的括号
c语言·开发语言·算法·leetcode·职场和发展
Jackson@ML6 小时前
Python数据可视化简介
开发语言·python·数据可视化
赵琳琅6 小时前
Java语言的云计算
开发语言·后端·golang
lly2024066 小时前
jQuery 杂项方法
开发语言
赵琳琅7 小时前
MDX语言的安全开发
开发语言·后端·golang
开开又心心的学嵌入式7 小时前
C语言——指针进阶应用
c语言·开发语言
开开又心心的学嵌入式7 小时前
C语言——指针基础知识
c语言·开发语言
lonelyhiker7 小时前
javascript的原型链
开发语言·javascript·原型模式
夏梓蕙8 小时前
Elixir语言的软件开发工具
开发语言·后端·golang