Matlab:如何随机置换和反向置换矢量

Man*_*odi 3 random matlab

我需要在Matlab中实现以下算法.

  1. 假设 A = [3 4 1 9 5]
  2. A随机置换,A = [5 1 4 3 9]
  3. 在前两个元素中添加2: A = [7 3 4 3 9]
  4. 置换回来, A = [3 4 3 9 7]

我正在使用randperm()功能来置换:

index = randperm(numel(A));
A = A(index);
Run Code Online (Sandbox Code Playgroud)

但问题是如何在将数组更改A为第一个排列之后将其置换回来.

sel*_*tze 9

您实际上可以将索引放在左侧:

A(index) = A;
Run Code Online (Sandbox Code Playgroud)

;-)