Removing rows in a matrix

3 Ansichten (letzte 30 Tage)
Chris Dan
Chris Dan am 19 Okt. 2020
Kommentiert: Ameer Hamza am 20 Okt. 2020
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?

Akzeptierte Antwort

Ameer Hamza
Ameer Hamza am 19 Okt. 2020
Try this
n = size(Identify_3);
idx = (mod((1:n)-1, 6)+1) <= 2;
Identify_3 = Identify_3(idx, :);
  3 Kommentare
Chris Dan
Chris Dan am 19 Okt. 2020
Bearbeitet: Chris Dan am 19 Okt. 2020
Hi,
Can you also tell about this matrix:
How can i edit your code to keep the rows 1.48,96,144,192 and so on, basically after the first row, we take 48th row and then double 49+48=96 and so on...
Also if I want to change your code for the original matrix, what should I change?
Ameer Hamza
Ameer Hamza am 20 Okt. 2020
You can do it like this
D = C([1 48:48:end], :)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Bjorn Gustavsson
Bjorn Gustavsson am 19 Okt. 2020
Bearbeitet: Bjorn Gustavsson am 19 Okt. 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
KSSV am 19 Okt. 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,:)

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Produkte


Version

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by