今天做图像处理时,看到一个矩阵的处理,简要谈谈下面几段代码:
首先是介绍矩阵(说明:在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()函数:查找数组元素然后修改元素,具体见下图
原文链接:https://blog.csdn.net/CV_YOU/article/details/52892673