今天做图像处理时, 看到一个矩阵的处理, 简要谈谈下面几段代码:
首先是介绍矩阵(说明: 在 matlab 中无是数组还是矩阵都是按列来存储的)
首先是一些特殊矩阵的建立
zeros(m,n)% 建立全 0 矩阵
ones(m,n)% 建立全 1 矩阵
eye(m,n)% 建立对角线全为 1 的矩阵
rand(m,n)%(0,1)随机分布的矩阵
randn(m,n)% 相比上一个, 均值为 0, 方差为 1
magic(m,n)% 魔方矩阵
对于矩阵的建立和元素访问, 很多和前面介绍的数组相同
下面看图访问矩阵
访问矩阵元素可以用单下标访问和双下标访问
sub2ind()和 ind2sub()函数进项访问方式转换;
A=[1:4;5:8]
ind1=sub2ind(size(A),2,3);% 将索引 (2,3) 转变为单下标索引
[i,j]=ind2sub(size(A),7);
数组相关操作
- A=[1 2 3;4 5 6;7 8 9];
- B=[9 8 7; 6 5 4; 3 2 1];
a=A(1:2,:)- 取 A 数组第几行元素(这里是第 1 和 2 行)
a=A(:,1:2)- 取 A 数组第几列元素(这里是第 1 和 2 列)
a=A(2:4)- 取 A 数组第 2 个到第 4 个元素
a=A(1:end)- 将元素正序排列
a=A(end:-1:1)- 将元素反序排列
a=A([2 4])- 取数组 A 第 2 个和第 4 个元素
a=A(1,2)- 取数组第一行第一列元素
C=[A B]- 将数组 AB 横向拼接
C=[A; B]- 将数组 AB 纵向拼接
下面几个操作要熟悉, 改变数组内容
A(A=1)=100;% 将 A 数组中为 1 元素全部变为 100
A(A>4)=20;% 将 A 数组中大于 4 的元素都变为 20
A(1,1)=10% 将 A 数组里 1 行 1 列元素变为 10
下面几个函数判断数组类型
isnumeric();% 判断是否为数值型数组
isreal();% 判断是否为实数型数组
isinteger();% 判断是否为整型数组,(matlab 默认存储 double 型)
islogical();% 判断是否为逻辑型数组
find()函数: 查找数组元素然后修改元素, 具体见下图
来源: http://www.bubuko.com/infodetail-3184010.html