matlab中数据的基本格式是矩阵,行向量、列向量和标量都是矩阵的特例。矩阵可以是二维的,也可以是多维的。
(1)查找矩阵中的元素
①find函数
在matlab中,可以调用find函数在矩阵中查找满足一定条件的元素,常见的调用格式如下:
其中X为要查找的矩阵;ind为矩阵X中满足查找条件的线性索引值。因为在matlab 中,矩阵是按列存储的,ind的值表示元素在矩阵中按列存储时的位置。m和n是列向量,分别保存元素在矩阵中的位置的行下标和列下标。
例如
A=[1 2 3 4;5 6 7 8];
%查找A中大于3的元素,返回元素的索引
ind=find(A>3);
得到的结果如下:
怎样理解呢?
也可以这样写
A=[1 2 3 4;5 6 7 8];
[m n]=find(A>3);
那这个怎样理解呢?
好了这就是find函数的理解和使用了
②ind2sub和sub2ind函数
这两个函数实现线性索引值和行、列下标之间的转换。调用的格式如下
A=[1 2 3 4;5 6 7 8];
ind=find(A>3);
[m n]=find(A>3);
[I J]=ind2sub(size(A),ind);
IND=sub2ind(size(A),I,J);
(2)删除矩阵中的指定元素
若想删除矩阵中的指定元素,只需将这些元素赋值为空(“[ ]"),例如,假设A是m*n维的矩阵,可以使用如下命令删除矩阵中的指定元素:
A(sub2ind(size(A),i,j))=[] %删除A的第i行,第j列的元素
A(i,:)=[] %删除A的第i行的数据
A(i:j,:)=[] %删除A的第i行到第j行的数据
A(:,j)=[] %删除A的第j列的所有元素
A(:,i:j) %删除A的第i列到第j列的数据
例如
A=[1,2,3,4;5,6,7,8];
A(1,:)=[] %删除第1行的所有元素
A=[1,2,3,4;5,6,7,8];
A(:,1)=[] %删除A的第一列元素
对于矩阵中单个元素的删除,MATLAB只允许使用线性索引值来指定该元素。
(3) 取得矩阵中的指定元素
用户可以使用如下方法来取得矩阵中某一(些)行或列的元素:
X=A(i,:) %取得A的第i行的数据,并赋值给变量X
X=A(i:j,:) %取得A的第i行到第j行数据,并赋值给变量X
Y=A(:,j) %取得A的第j列的数据
Y=A(:,i:j) %取得A的第i列到第j列的数据
Z=A(i:j,n:m) %取得矩阵第i行到第j行以及第n列到第m列之间的数据
(4)查询矩阵的大小
num=size(A) %返回矩阵的行数和列数,num是一个1*2的数组,第一个数值是矩阵的行数,第二个数值是矩阵的列数
num=length(A) %返回A的行数和列数的最大值,相当于max(size(A))
num=size(A,1) %返回矩阵A的行数
num=size(A,2) %返回矩阵A的列数
(5)取得矩阵中元素的最大值和最小值:max和min函数
C=max(A) %取得矩阵A中每一列的最大值,组成行向量返回给C
C=max(A,B) %取得矩阵A和B对应元素的最大值
C=max(A,[],dim) %取得矩阵每行或每列的最大值,dim=1表示每列的最大值组成的行向量,dim=2表示每行的最大值组成的列向量
%同理,min也有上面的三种用法
例如
a=[2 3;3 6;4 9]
b=[1 4;4 5;5 8]
max(a)
min(a)
max(a,b)
max(a,[],2)
max(a,[],1)
执行结果如下