Rearrange any matrix Randomly with a specific sequence
3 views (last 30 days)
Show older comments
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,
Accepted Answer
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
More Answers (1)
TADA
on 22 Jun 2019
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,[])
See Also
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!