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

2 views (last 30 days)
Thats my code
X=[x1 x2 x3]; %25by3 matrix
%
k = randperm(size(X,1));
Ex_Ran= X(k(1:10),:)%extract 10 rows randomly

Accepted Answer

Star Strider
Star Strider on 17 May 2015
Try this:
X=[x1 x2 x3]; %25by3 matrix
k = randperm(size(X,1));
Ex_Ran = X;
Ex_Ran(k(1:10),:) = [] %extract 10 rows randomly
  7 Comments
stelios loizidis
stelios loizidis on 6 Aug 2019
Hello,
I want to tell you that I have the following issue: I am trying to remove 2000 random columns from a matrix A (1653X8000). I applied the above code but Matlab gives me the following error:
Index exceeds the number of array elements (1653)
The code I wrote:
A=[x1 x2, x3.....] %1653by8000 matrix
k=randperm(size(A,1));
B=A;
B(:,k(1:2000))=[];
Your help is valuable!!
Steven Lord
Steven Lord on 6 Aug 2019
k is a reordering of the numbers between 1 and the number of rows in A.
You want a reordering of the numbers between 1 and the number of columns in A (which is the size of A in the second dimension) if you want to use it as a set of indices into the columns of B (which starts off as a copy of A.)

Sign in to comment.

More Answers (3)

Andrei Bobrov
Andrei Bobrov on 18 May 2015
n = 10;
m = size(X,1);
out = X(rendperm(m,m-n),:);

Mark Stone
Mark Stone on 18 May 2015
Edited: Mark Stone on 18 May 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
Murali Krishna on 18 May 2015
Edited: Murali Krishna on 18 May 2015
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');

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!