单元阵列中每个单元的随机置换

时间:2015-07-24 12:36:38

标签: matlab random permutation cell-array

我有 1 -by- 4 单元格数组D。每个单元元素包含 2 -by- 2 双矩阵。我想独立地对每个矩阵进行随机置换,结果我将具有与D相同大小的单元阵列,但其矩阵'元素将被置换,然后是反转,以便再次获得原始D

对于单个矩阵的情况我有代码,它的工作原理如下:

A=rand(3,3)
p=randperm(numel(A));
A(:)=A(p)
[p1,ind]=sort(p);
A(:)=A(ind)

但它对单元格数组不起作用。

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是使用循环:

getFragmentManager()

假设您的nd = numel(D); D_permuted{1,nd} = []; D_ind{1,nd} = []; for d = 1:nd) A=D{d}; p=randperm(numel(A)); A(:)=A(p) [~,ind]=sort(p); D_permuted{d} = A; D_ind{d} = ind; end 矩阵只是一个相同大小的列表(例如 2 -by - 2 )矩阵,那么您可以通过使用来避免循环一个3D双矩阵而不是单元阵列。

例如,如果您喜欢这样的D

D

然后你就可以像这样进行排列

n = 5;
D = repmat([1,3;2,4],1,1,n)*10  %// Example data