How randomly choose pairs of elements from a squared matrix and put them in an other matrix?
Show older comments
Hi, I have a matrix A
A =
1 4 2 3
4 3 1 2
3 2 4 1
2 1 3 4
How to make different groups of two elements from this matrix? But the chosen elements (from the matrix A) have to be adjacent in the matrix A. for example A(1,1) & A(1,2) are adjacent and so they can be chosen. and A(1,1) & A(4,3) can't be chosen to make a group. I'd like to create a function which randomly choose these elements from A. And the function generates an other matrix containing the (2 by 2) different groupements randomly created.
example "function group":
V=group(A)
V= 1 4
3 2
4 2
3 1
2 1
4 3
3 2
1 4
This new V matrix is made of groups
A(1,1)&A(2,1)
A(2,2)&A(4,1)
A(1,2)&A(1,3)
...
Hope you understand what I mean. In fact we randomly choose pairs of elements in the matrix A. thank you!
Accepted Answer
More Answers (1)
Azzi Abdelmalek
on 11 Jun 2013
Edited: Azzi Abdelmalek
on 11 Jun 2013
m=5
n=numel(A)
ii=0
idx=[];
while ii<m
id=setdiff(randperm(16),idx,'stable');
[ii1,jj1]=ind2sub(size(A),id(1));
[ii2,jj2]=ind2sub(size(A),id(2));
if or(abs(ii1-ii2)==1 & abs(jj1-jj2)==0,abs(ii1-ii2)==0 & abs(jj1-jj2)==1);
ii=ii+1;
idx=[idx id(1:2)];
B(ii,:)=[A(id(1)) A(id(2))]
end
end
disp(idx) % Linear index
[idx1,idx2]=ind2sub(size(A),idx);
4 Comments
Lorenz
on 11 Jun 2013
Azzi Abdelmalek
on 11 Jun 2013
idx1(1) idx2(1) coordinate of first point,
idx1(2) idx2(2) coordinate of adjacent second point
and so on
Azzi Abdelmalek
on 11 Jun 2013
That means it can not find 8 couples of adjacent elements
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!