How randomly choose pairs of elements from a squared matrix and put them in an other matrix?
Ältere Kommentare anzeigen
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!
Akzeptierte Antwort
Weitere Antworten (1)
Azzi Abdelmalek
am 11 Jun. 2013
Bearbeitet: Azzi Abdelmalek
am 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 Kommentare
Lorenz
am 11 Jun. 2013
Azzi Abdelmalek
am 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
am 11 Jun. 2013
That means it can not find 8 couples of adjacent elements
Kategorien
Mehr zu Sparse Matrices finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!