I have a 25by3 matrix and i want to remove randomly 10 rows (I have already completed this part). The problem is that i want the original matrix which is 25by3 to be 15by3 after removing 10 rows. Thats my question
Afficher commentaires plus anciens
Thats my code
X=[x1 x2 x3]; %25by3 matrix
%
k = randperm(size(X,1));
Ex_Ran= X(k(1:10),:)%extract 10 rows randomly
Réponse acceptée
Plus de réponses (3)
Andrei Bobrov
le 18 Mai 2015
n = 10;
m = size(X,1);
out = X(rendperm(m,m-n),:);
Mark Stone
le 18 Mai 2015
Modifié(e) : Mark Stone
le 18 Mai 2015
I show you this just so that you 'll be aware of the very handy setdiff function. it might not be as fast executing as the previous answer, but it is elegant.
X =[x1 x2 x3]; %25by3 matrix
k = randperm(size(X,1));
X = X(setdiff(1:25,k(1:10)),:);
Or you can make the left hand side a new variable, such as Y, if you want to preserve the original 25 by 3 matrix as is.
Y = X(setdiff(1:25,k(1:10)),:);
Murali Krishna
le 18 Mai 2015
Modifié(e) : Murali Krishna
le 18 Mai 2015
0 votes
To extract 10 rows of a given matrix
a=rand(25,3);%25*3 matrix
b=randperm(10);
c=a([b],:);
k=setdiff(a,c,'rows');
2 commentaires
Walter Roberson
le 18 Mai 2015
That is going to extract the first 10 rows, but in a random order. You need to randperm() over the whole 25 and take only 10 of the scrambled values as the indices to extract.
Murali Krishna
le 18 Mai 2015
Thank u...
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!