在Matlab中按升序重新排序的位置?

时间:2015-09-15 17:46:05

标签: matlab matrix

我在维度mxn的Matlab中有一个矩阵,例如

A= [ 1     1     1;
     1     1     1;
     2     2     2;
     0     0     1]

我想按升序排序A行,并获得此顺序中每行的位置。如果我使用

[~,~,jj] = unique(A,'rows');

我得到了

jj=[2;2;3;1]

我想得到的是jj=[2;3;4;1](或jj=[3;2;4;1]),即使A的前两行相同,它们也不应与同一位置相关联{{1 }}。

2 个答案:

答案 0 :(得分:3)

检查sortrows。这会对基于行的数组进行排序,并为您提供一个数组index,用于指示每行最初的位置。

[B,index] = sortrows(A);


B =

     0     0     1
     1     1     1
     1     1     1
     2     2     2

index =

     4
     1
     2
     3

而且,正如@Divakar指出的那样:

[~,out] = intersect(index,1:4);
out =

     2     3     4     1

答案 1 :(得分:2)

如果元素只是整数,这可能是另一种方式 -

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
   http.httpBasic().realmName("SiteMinderRealm").and().x509();
   }
}

示例运行 -

[~,idx] = sort(A*[0:size(A,2)-1].'*(max(A(:))+1),1) %//'
[~,out] = sort(idx) %//'