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的支持。

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-08-29

比如对矩阵A的每一行进行排列,排列的指标是第一列数的大小。那么从小到大进行排列:

[~,I]=sort(A(:,1));
A=A(I,:);

这样就把A的每一行重新排列了一下(按照第一列从小到大)。

如果要从大到小,那么也很简单。

[~,I]=sort(-A(:,1));
A=A(I,:);

本回答被网友采纳
第2个回答  2016-10-24

在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;  % 输出按每行排序的矩阵

第3个回答  2016-08-29
sort函数可以实现

matlab中怎样将矩阵的每一行进行排序
[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)表...

matlab 把矩阵 的每一行按由小到大重新排列
b=a'%转置矩阵 c=sort(b)%对转置矩阵进行从小到大的排序 d=c'%最终得到初始矩阵每一行按由小到大重新排列

MATLAB:矩阵排序问题(sort\/sortrows)
(1)对矩阵的每行进行升序排序: sort(A,2)(2)对矩阵的每列进行升序排序: sort(A,1)(3)对整个矩阵按第一列进行升序排序:sortrows(A,1)(4) 按第二列对矩阵进行升序排序:sortrows(A,2)(4) 按第一列对矩阵进行降序排序:sortrows(A,-1)

MATLAB怎么让矩阵A的每一行按照矩阵B的每一行元素值大小重新排序啊?
sort(A,2) 按行方向排序(升序)sort(A,2,'descend') 降序

matlab如何将已有矩阵的每行元素重新随机排列
使用randperm函数生成随机位置,然后将原矩阵进行修改,程序如下:简单的实验结果如下:

matlab 中,怎么让一个矩阵按某一列排列,并且行也跟着变动
1、打开MATLAB软件,可以使用ortrows函数,在命令行窗口内打入help sortrows,就会出现以下画面,就如下图所示,根据出现的提示进行下一步进程。2、有了函数之后,这时需要创建一个矩阵,矩阵a为3行3列,可以输入“sortrows(a,1)”,就会看到以下画面,如下图所示,这个函数是对整个矩阵按第一列进行升序...

matlab 中,怎么让一个矩阵按某一列排列,并且行也跟着变动?
在matlab中让矩阵按某一列排列,需要用到排序算法对某一列数据排序,然后在排序算法的if判断句中,依次交换矩阵两行内容。以题目中矩阵为例,可以利用冒泡法对第三列数据排序,实现程序如下:a=[5 7 8;4 6 1;8 0 7];n=length(a);b=[];for i=1:n-1 for j=1:n-i if(a(j,3)>a(...

matlab中怎么样把矩阵中的每一个元素按顺序挑选出来出来
你这个转制一下就行了,即B=A'就能得到了行向量B[1 2 3 4 5 6]

matlab 中,怎么让一个矩阵按某一列排列,且行也跟着变动?
可以使用sortrows函数:sortrows(A,k) 将矩阵A按第k列排序,每一行跟着变动。升序排列:[~,I]=sort(A(:,5));%假如对第5列进行升序排列,A=A(I,:);%这样排列就完成了。MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、...

matlab怎么对矩阵内元素进行全排列?排列后依旧是一个矩阵,不是一串字符...
例如,行向量: a = [1 2 3 4 5 6] 执行下面语句把它变成3行2列:b = reshape(a,3,2)执行结果:b = 1 4 2 5 3 6 若a=[1 2 3 4 5 6 7 8 9]使用reshpe后想得到 b=[1 2 3 4 5 6 7 8 9]只需要将a转置一下就可以了: b=reshape(a',1,9)不知道有没有帮...

相似回答