matlab中矩阵的运算是很重要的,矩阵是matlab的主要数据存储形式,那在实际应用中,对于存储起来的数据需要提取其中部分数据,或对数据进行平均化或选取最大最小值等操作应该怎么实现?在本文中一一介绍。
目录
一、基础:
首先介绍最基础的在一个矩阵中如何提取该矩阵的某一行或某一列。在此我们假设接下来的所有代码处理的数据X如下所示:
X=[0.8467,0.8760,0.8325,0.8061,0.8576,0.8683;
0.8820,0.9220,0.7354,0.8110,0.8329,0.7354;
0.8989,0.9257,0.8414,0.7549,0.8346,0.8414;
0.5641,0.5850,0.5114,0.5655,0.5695,0.5286;
0.7260,0.9062,0.7830, 0.8734,0.7990,0.7830;
0.7146,0.9062,0.7830,0.8631,0.8044,0.7830;
0.6490,0.7079,0.7063,0.5155,0.6067,0.7063]
1 提取某行或某列
假设我们需要提取X中的第i行数据
xi=X(i,:);
或提取X中第j列的数据
xj=X(:,j);
通过上述方法则可以随意提取矩阵中的行与列。若想一次直接提取X中的多行或多列,则可以进一步执行如下代码:
%选取X中第3-5行数据
t=X(3:5,:);
%选取X中前3列数据
p=X(:,1:3);
二 进阶
1 选取矩阵中最大或最小元素
若想选取出某一个矩阵中最大值或最小值并找到该值所在的位置,则可以通过调用两次min或max函数执行,以X为例,执行如下代码:
%选取X中最大的元素
a=max(max(X));
%返回最大值所在的行或者列
[r,c]=find(X==a)
%选取X中最小的元素
i=min(min(X));
%返回最小值的行或者列同理
进一步采用max函数结合ind2sub()函数也可以实现上述内容:
[n,m]=max(X(:));
[i,j]=ind2sub(size(X),m);
%i,j分别返回X中最大值所在的行列坐标
2 单独针对矩阵行列寻找最大或最小值
该部分主要介绍在矩阵中寻找矩阵每一行或每一列中最大或最小的元素,亦或者针对每行或者每列求均值:
1 求最大或最小值
%寻找矩阵X中每一列的最小值
min(X,[],1);
%寻找矩阵X中每一行的最小值
max(X,[],2);
2 求每行或每列的均值
%求矩阵X每一行的均值
X_mean=mean(X,2);
%求矩阵X每一列的均值
X_mean=mean(X,1);