随机打乱和逆过程

来源:互联网 发布:ssh安装 centos 编辑:程序博客网 时间:2024/06/17 07:23

实验中,我们经常需要对样本进行随机打乱,一般情况下,首先生成一个随机序列,然后通过下标索引的方式得到打乱后的序列。

A 表示原样本,B表示打乱的样本,通过 rand_ind,我们可以知道:B ==> A (B到A的映射)。
而现在我们想知道 A ==> B 的映射。

clear all;A = [3 4 5 6 1 2 ];disp('A:');disp(A);if ~exist('tst_rand.mat','file')    ind = randperm(length(A));    save('tst_rand.mat','ind');else    load tst_rand.mat;endB = A(ind);disp('B: ');disp(B);% create mapmap = zeros(length(A),2);reverse_map = zeros(length(A),2);for i = 1:length(ind)    map(i,1) = i;    map(i,2) = ind(i); % B ==> Aendfor i = 1:length(ind)    reverse_map(i,1) = map(i,2);    reverse_map(i,2) = map(i,1); % A == >Bendss = sortrows(reverse_map,1);re_ind = ss(:,2);re_A = B(re_ind);disp('re_A:');disp(re_A);

结果:

A:     3     4     5     6     1     2B:      4     1     2     6     5     3re_A:     3     4     5     6     1     2
原创粉丝点击