matlab中数据的基本格式是矩阵,行向量、列向量和标量都是矩阵的特例。矩阵可以是二维的,也可以是多维的。

(1)查找矩阵中的元素

①find函数

在matlab中,可以调用find函数在矩阵中查找满足一定条件的元素,常见的调用格式如下:

  • ind=find(X)
  • [m n]=find(X)

其中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函数

这两个函数实现线性索引值和行、列下标之间的转换。调用的格式如下

  • [I,J]=ind2sub(size,IND)
  • IND=sub2ind(size,I,J)
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)

 执行结果如下

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐