假设我有两个数组,其中一个是另一个的排列:
A = [2 1 5 3 7]
B = [7 2 1 3 5]
Run Code Online (Sandbox Code Playgroud)
两个阵列都没有重复.
如何获得两者之间的置换映射?
例如A->B应该是:
[2, 3, 5, 4, 1]
Run Code Online (Sandbox Code Playgroud)
意思是:
A(1) -> B(2)
A(2) -> B(3)
A(3) -> B(5)
A(4) -> B(4)
A(5) -> B(1)
Run Code Online (Sandbox Code Playgroud)
有没有使用的快速矢量化解决方案ismember?根据我的经验,ismember对于非常大的阵列来说往往很慢.
Nat*_*ate 17
这个怎么样:
[i a] = sort(A);
[i b] = sort(B);
mapping = b(a)
Run Code Online (Sandbox Code Playgroud)
使用ismember.
[~,idx] = ismember(A,B);
Run Code Online (Sandbox Code Playgroud)
向量idx将包含这样的索引B(idx) == A.
请注意,ismember找到最高的索引.