How to select two matrices randomly from a set of N matrices and then randomly select a few rows from first selected matrix and then exchange with corresponding rows of other selected matrix.

1 view (last 30 days)
For example we have 10 matrices A,B,C,D,E,F,G,h,I,J and we select randomly two matrices C and H. And then Randomly select any two rows from C and exchange with corresponding rows of H.

Answers (2)

Thorsten
Thorsten on 25 Oct 2016
Edited: Thorsten on 25 Oct 2016
Q = cat(3,A,B,C,D,E,F,G,H,I,J);
kk = randperm(size(Q, 3), 2); % select 2 matrices from Q
ii = randperm(size(Q, 1), 2); % select 2 rows
Q(ii, :, kk) = Q(ii, :, fliplr(kk));

Andrei Bobrov
Andrei Bobrov on 25 Oct 2016
For the case where the matrices have the same size:
Q = cat(3,A,B,C,D,E,F,G,H,I,J);
ii = [3,8] % C and H
n = size(Q,1);
z = 1:n;
jj = z(randperm(n,2));
M = Q(:,:,ii);
M(jj,:,:) = M(jj,:,end:-1:1);
Q(:,:,ii) = M;

Categories

Find more on Matrices and Arrays 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!