相关疑难解决方法(0)

如何在MATLAB中针对一列对二维数组进行排序?

我想根据特定列对矩阵进行排序.有一个sort函数,但它独立地排序所有列.

例如,如果我的矩阵data是:

 1     3
 5     7
-1     4
Run Code Online (Sandbox Code Playgroud)

然后所需的输出(按第一列排序)将是:

-1     4
 1     3
 5     7
Run Code Online (Sandbox Code Playgroud)

但输出sort(data)是:

-1     3
 1     4
 5     7
Run Code Online (Sandbox Code Playgroud)

如何按第一列对此矩阵进行排序?

sorting matlab matrix octave

45
推荐指数
2
解决办法
6万
查看次数

用另一个矩阵对矩阵进行排序

假设我有一个矩阵A,我对这个矩阵的行进行排序.如何在矩阵上复制相同的顺序B(当然大小相同)?

例如

A = rand(3,4);
[val ind] = sort(A,2);
B = rand(3,4);
%// Reorder the elements of B according to the reordering of A
Run Code Online (Sandbox Code Playgroud)

这是我提出的最好的

m = size(A,1);
B = B(bsxfun(@plus,(ind-1)*m,(1:m)'));
Run Code Online (Sandbox Code Playgroud)

出于好奇,还有其他选择吗?

更新: Jonas在2008a(XP)上的优秀解决方案:

n = n

0.048524       1.4632       1.4791        1.195       1.0662        1.108       1.0082      0.96335      0.93155      0.90532      0.88976
Run Code Online (Sandbox Code Playgroud)

n = 2米

0.63202       1.3029       1.1112       1.0501      0.94703      0.92847      0.90411       0.8849       0.8667      0.92098      0.85569
Run Code Online (Sandbox Code Playgroud)

它只是表明,由于JITA(或许),循环不再是MATLAB程序员的诅咒.

matlab bsxfun

21
推荐指数
2
解决办法
1万
查看次数

标签 统计

matlab ×2

bsxfun ×1

matrix ×1

octave ×1

sorting ×1