# Rearrange any matrix Randomly with a specific sequence

1 view (last 30 days)
Mahmoud Khadijeh on 22 Jun 2019
Commented: Mahmoud Khadijeh on 22 Jun 2019
Hello,
I have a Matrix A like this
A=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]'
I want to redistribute the matrix but I want to preserve a specifc sequence which is 5 here.
I mean I need a way to redistribute each five element randomly and assign them to a new matrix
for example:
the matrix B will be like this:
B=[6 7 8 9 10 11 12 13 14 15]'
the matrix C will be like this:
C=[ 1 2 3 4 5 16 17 18 19 20]'
Is that possible in MATLAB ?
Thanks,
Mahmoud Khadijeh on 22 Jun 2019
I just want to rearrange each five element in the matrix A randomly for example ,
If I run the code, I want the matrix A to be like this:
A=[16 17 18 19 20 1 2 3 4 5 11 12 13 14 15 6 7 8 9 10 ]'
if I run the code again, I want the matrix to be like this:
A=[1 2 3 4 5 16 17 18 19 20 6 7 8 9 10 11 12 13 14 15 ]'
regards,

infinity on 22 Jun 2019
Here is an example that you can refer
a = 1:20;
b = randperm(4);
n = length(b);
for i = 1:n
c(5*(i-1)+1:5*i) = a(5*(b(i)-1)+1:5*b(i));
end
Mahmoud Khadijeh on 22 Jun 2019
Thank you very much, that's what I want

A=1:20;
blockSize = 5;
nOutputBlocks = 2;
a=reshape(A,blockSize,[]);
i=sort(reshape(randperm(size(a,2)),[],nOutputBlocks),2);
B=reshape(a(:,reshape(i',1,[])),blockSize*nOutputBlocks,[])
Mahmoud Khadijeh on 22 Jun 2019
Thank you very much, that's works with me