Matlab 冒号(colon)的使用

来源:互联网 发布:淘宝女模特 小姚晨 编辑:程序博客网 时间:2024/06/11 11:33

        笔者在美帝学习计算机视觉(ComputerVision)的时候第一堂课学的就是matlab中的冒号(colon)使用,由于语言障碍并没有听的很懂,于是默默百度谷歌逛别人博客,然后自己再在matlab敲一敲,站在在前辈们的肩膀上写了这样一篇学习笔记。文字描述很多来自于前辈文案,出处标注在文末,侵权请联系本人删除。

 


1.    X1:d:X2

此方法用作生成等间距的序列,在X1到X2之间以d为间距生成等差序列,如果X2与X1的差不是d的倍数那么生成的序列将不包含X2.。默认间隔d=1。


 

注意所有标点符号均应使用英文,可以看到上图中笔者不小心输入了中文冒号被报错。

由于20不能被6整除所以输出结果到19为止,运行结果如下。

 


 

2.   使用冒号在向量、矩阵、和高维数组中提取指定的行、列、和元素。

A(:,j)提取A的第j列的全部元素。
A(i,:) 提取A的第i行的全部元素。
A(:,:) 等价于二维数组,提取全部行和列的所有元素。
A(j:k) 等价于A(j),A(j+1),...,A(k)。
A(:,j:k) 等价于A(:,j),A(:,j+1),...,A(:,k)。
A(:,:,k) 提取三维数组A的第k页。
A(i,j,k,:) 是关于四维数组A的一个向量,这个向量包括A(i,j,k,1), A(i,j,k,2), A(i,j,k,3), 等等。

A(:) 返回A的所有元素,视为一列。

 

 

 

3.  在matlab中,a(:, :,1)表明Img是一个三维矩阵,意思是说取三维向量Img的第一页,也就是第一个二维矩阵。

       另一种解释是img(:,:,1)的意思是图像的第一通道,假设图像是RGB三分量组成的图像(Red,Green和Blue),那么图像的第一通道就是R,第二通道是G,第三通道是B
Img(:,:,1)就代表R通道,也就是红色分量图像;Img(:,:,2)代表G通道,也就是绿色分量图像;Img(:,:,3)代表B通道,也就是蓝色分量图像。

 

下面是两张举例图片,一张是灰度图像Lena.jpg(gray scaleimage,表是不是黑白两色的,有深浅各种颜色,但是没有彩色),另一张是一张是color image 文件名prppers.bmp。



 

imread 函数的作用是读入一张图片,把图像转换成矩阵(Matrix)保存在变量中。

 可以看到对灰度图片和彩色图片取值的格式是不同的。

 a = imA(:,2); 表示获取imA的第二列的全部行的元素,保存在a中。

 b = imB(:,:,1); 表示获取imB的第一通道(R通道)的全部元素。


 tempA = imA(120:123,300:303); 表示获取imA的第120至123行,第300之303列的元素,即一个4*4的矩阵。tempB同理。





并没有得到正确的数据运算结果,这是因为图像矩阵默认是uint8型的,范围是0~255的整数,所以直接相加减的结果的范围是(0,255)。如果想要得到正确的结果必须把uint8类型转成double类型。



参考:

http://jingyan.baidu.com/article/8cdccae99ff546315413cd0f.html

http://blog.sina.com.cn/s/blog_6e8f9abf0100s3dw.html

https://zhidao.baidu.com/question/179666128220698804.html

还有我自己的课堂笔记

 

原创粉丝点击