Matlab: How to randomly permute and inverse permute a vector

matlab, random

Solution

You can actually put the indexing on the left hand side:

A(index) = A;

;-)

Problem

I need to implement the following algorithm in Matlab. - Suppose `A = [3 4 1 9 5]` - permute `A` randomly say, `A = [5 1 4 3 9]` - Add 2 to the first two elements: `A = [7 3 4 3 9]` - permute A back, `A = [3 4 3 9 7]` I am using `randperm()` function to permute: ``` index = randperm(numel(A)); A = A(index); ``` But the problem is how to permute it back, after changing array `A` to the first permutation.

Original source