How Can I randomly select 20% of my array elements AND save their indices (row,column) ?
11 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Omar Shehata
el 19 de Jul. de 2017
Comentada: Jan
el 19 de Jul. de 2017
I have a matrix A with n points.
A = [230,30,40,40,80;40 40 30 80 230;40 40 40 230 80]; n=numel(A);
How can i now randomly select a percentage of the points (example p=20% of n) ?
The output should be a new matrix with these random elements. AND another array that tells me "which" elements(row, column) were selected.
Any help appreciated :)
0 comentarios
Respuesta aceptada
Jan
el 19 de Jul. de 2017
Editada: Jan
el 19 de Jul. de 2017
A = [230,30,40,40,80;40 40 30 80 230;40 40 40 230 80];
n = numel(A);
Index = randperm(numel(A), ceil(numel(A) * 0.20));
[Xp, Yp] = ind2sub(size(A), Index);
Selected = A(Index);
This chooses 20% of the values randomly and replies the values in Selected and the indices in Xp, Yp.
2 comentarios
Jan
el 19 de Jul. de 2017
@Omar: What did you try so far?
B = nan(size(A));
B(Index) = Selected;
Más respuestas (1)
ES
el 19 de Jul. de 2017
A = [230,30,40,40,80;40 40 30 80 230;40 40 40 230 80];
n=numel(A);
B=reshape(A, 1, n); %1-D array
p = randperm(n);%random permutation of numbers till n
k = p(1:ceil(numel(p)/8));%Very poor algo for 1st to 20% of elements. You can improve here
C=B(p);%Target Matrix
0 comentarios
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!