![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
matlab中怎样将矩阵的每一行进行排序
sort函数是Matlab内置的排序函数,可以满足常用的排序需求。sort函数的基本形式如下:
[Y,I] = sort(X,DIM,MODE)
其中:
Y表示对X排序后的结果
I 表示Y中对应元素原来在X中的下标
mode的默认值是‘ascend’升序排列,‘descend’为降序排列
DIM的默认值是1,如果X是矩阵,则默认对矩阵的各个列进行升序排列,即sort(X,1)与sort(X)等效(矩阵在matlab中是按列存储的)
sort(X,2)表示对矩阵的各行中的元素按照升序排列
如果X是行向量,则Y与I也是行向量;如果X是列向量,则Y与I也是列向量,如果X是矩阵,则Y与I是与X维数相同的矩阵。
由于在排序的时候保留了数据在原数组的下标信息,所以排序是可逆的。如果[Y,I] = sort(X,DIM,MODE)X是排序前的向量,Y是排序后的向量,I是下标的索引,则X=Y(I),可以还原原来的向量。
MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
比如对矩阵A的每一行进行排列,排列的指标是第一列数的大小。那么从小到大进行排列:
[~,I]=sort(A(:,1));
A=A(I,:);
这样就把A的每一行重新排列了一下(按照第一列从小到大)。
如果要从大到小,那么也很简单。
[~,I]=sort(-A(:,1));
A=A(I,:);
在matlab中,可以用sort函数分别对矩阵的每一行进行排序。具体实现方式,可参考如下程序:
function Y = fun(X)
A = X; % 备份输入矩阵
[row, col] = size(A); % 计算输入矩阵的维数
for i = 1 : row % 循环遍历矩阵的每一行
a = A(i, :); % 取出矩阵的每一行
b = sort(a); % 对每一行进行排序
A(i, :) = b; % 将排好序的行向量覆盖原矩阵的对应行
end
Y = A; % 输出按每行排序的矩阵