Removing rows in a matrix
7 views (last 30 days)
Show older comments
Hello,
I have this matrix, called A matrix. I am attaching the file with the question. Also the picture of some of its data values
I need to remove some of its rows in a loop. I want to keep rows 1,2 then remove 3,4,5,6, keep 7,8,then remove 9,10,11,12, keep 13,14.. like this it goes on.keep 2 remove 4 rows.
Does anyone know?
0 Comments
Accepted Answer
Ameer Hamza
on 19 Oct 2020
Try this
n = size(Identify_3);
idx = (mod((1:n)-1, 6)+1) <= 2;
Identify_3 = Identify_3(idx, :);
3 Comments
More Answers (2)
Bjorn Gustavsson
on 19 Oct 2020
Edited: Bjorn Gustavsson
on 19 Oct 2020
If you can determine/calculate all rows you want to remove at once it is best to do the re-sizing of the array at once, instead of row-by-row (if I've understood this right, the reallocation-operation is the main argument to not automatically and incrementally grow arrays, ought to be similar for shrinking.):
idx2remove = [];
for i1 = 1:size(A,1)
if some_conds(A(i1,:))
idx2remove = [idx2remove,i1];
end
end
A(idx2remove,:) = [];
Ah, if you have to remove rows [3,4,5,6]+6*n then something like this should work:
idx2remove = 1:size(A,1);
idx2remove = reshape(idx2remove,6,[]);
idx2remove = idx2remove(3:end,:);
A(idx2remove(:),:) = [];
If this doesn't work out because your A doesn't have a multiple of 6 rows, then you'll have to modify the creation of the remove-array a bit. You could also go for creating an array with row-indices to keep and do:
A = A(idx2keep,:);
HTH
KSSV
on 19 Oct 2020
Let A be your data. It seems every four rows have real value of complex number very less. We can use keep these rows.
idx = real(abs(A(:,1)))<=10^-10 ; % this will give indices of what you want to keep
iwant = A(idx,:)
See Also
Categories
Find more on Matrices and Arrays 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!