我在维度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 }}。
答案 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) %//'