【matlab图像处理】matlab数据结构(2)

中国史之【后稷创周部落】:
弃,姬姓,又称后稷(ji),周族姬姓始祖,善于种植各种粮食作物,曾在尧舜时代当农官,教民耕种,被认为是开始种稷和麦的人。后稷被封于邰(今陕西武功县),并赐姓姬氏,周族始兴。
——来源:全历史APP

俗话说:“好记性不如烂笔头”,多写写多记记,总不会错。多一些不为什么的坚持,少一些功利主义的追求。

今天介绍matlab的数据结构(2),为了直观理解,本文直接以结果截图为例,这点代码并不需要写成文本,最好自己跟着打一遍。本内容参考自《实用MATLAB图像和视频处理》第三章。

1、特殊的内置矩阵

matlab中有若干内置函数,都比较常用,可以直接调用来生成相应的矩阵,具体如下:
在这里插入图片描述
zeros是生成全0矩阵,ones是生成全1矩阵,括号内的参数表示行数和列数。其中,生成的矩阵可以直接进行矩阵运算,如上图所示。

除此之外,还有两个比较常用的内置矩阵。
在这里插入图片描述
从上面可以看出,这两个函数都是生成特定矩阵形状的随机数。但是,rand函数生成的是满足0到1的均匀随机分布,而randn生成满足均值为0,方差为1的正态分布随机数。

2、矩阵堆叠/矩阵级联/矩阵拼接(concat)

concat操作在深度学习中非常常用,用于将一些相同维度的特征向量进行堆叠。矩阵堆叠可以用方括号[]或函数cat实现,例子如下:
在这里插入图片描述
我们可以显式地将矩阵的每一行元素定义出来,也可以分别定义每一行,将其通过方括号进行组合。从上面可以看出,[X ; Y]中分号是以垂直的方式进行拼接,类似numpy的vstack()。[X ,Y]中逗号是以水平的方式进行拼接,类似numpy的hstack()。

同理,使用函数也可以实现这样的效果,如下:
在这里插入图片描述
cat中第一个参数即指定堆叠的方式,1表示垂直拼接,2表示水平拼接。

另外,还可以使用方括号来删除矩阵的某行或某列,如下:
在这里插入图片描述
A(:,2)=[]是指对任意行,第2列进行删除,也就是以空向量处理。

3、矩阵下标/索引

  • 一个有N个元素的向量是一个有1行N列的数组,一个向量的元素可以通过元素的下标进行访问,如X(2)所访问的是向量X中第2个元素。
  • 一个2维矩阵的元素可通过指定相应的行和列进行访问,如X(2,5)所访问的是X矩阵中第2行第5列的元素。更高维的张量也是同理。

值得注意的是,MATLAB中数组是从1开始计数的,这和其他python或C语言从0开始索引不一样。
在这里插入图片描述
生成多维数组(张量)如上,第三个参数指定个数。在图像中,一幅RGB图像,就是一个三维的矩阵堆叠,也叫三通道。
在这里插入图片描述
如上,可以使用size函数查看矩阵的维度,使用disp函数显示矩阵的数值。

【声明】:学习笔记基于互联网上各种学习资源的个人整理。

以上是本期内容,下期介绍matlab的数据结构(3)。

我叫小保,一名计算机视觉爱好者、学习者、追随者,欢迎关注我一起学习。

猜你喜欢

转载自blog.csdn.net/ling_xiobai/article/details/123209345
今日推荐