Delete row not following pattern
Ältere Kommentare anzeigen
Hi,
I have....
a = [ 2 5 1 0.504;
3 6 2 0.507;
3 4 1 0.589;
9 4 2 0.503;
8 3 1 0.592;
3 2 2 0.203;
9 5 2 0.341;
4 8 1 0.592]
Notice how the 2nd to the last column, column #3, follows a pattern of 1, 2, 1, 2..and so on. The 7th row however has a 2 in the 2nd last column just like the 6th row before...thus does not follow the pattern. I want to delete one of these two rows based on the value in the last column. I want to delete which ever row has a value in the last column further away from the number 0.500.
I would want to delete any row where the 2nd last column does not follow the pattern 1,2,1,2 and when deciding between which row out of the two rows to delete...base it on whichever is further from the number 0.500. Thanks!
1 Kommentar
Image Analyst
am 10 Jul. 2015
Do you startup the pattern again after deleting the row? In other words, is row 8 correct because you're starting up fresh with the next number in the pattern (1)? Or is it wrong because row 7 should have been a 1 and row 8 should have been a 2. Since row 8 should have been a 2 and it's a 1, it's wrong, unless you're restarting the pattern after deleting row 7.
Akzeptierte Antwort
Weitere Antworten (1)
Azzi Abdelmalek
am 10 Jul. 2015
Bearbeitet: Azzi Abdelmalek
am 10 Jul. 2015
a = [ 2 5 2 0.504; 3 6 2 0.507; 3 4 1 0.589; 9 4 2 0.503; 8 3 1 0.592; 3 2 2 0.203; 9 5 2 0.341; 4 8 1 0.592]
c3=a(:,3)
c4=a(:,4)
id=[1 diff(c3)' ]
ii=find(id==0)
for k=1:numel(ii)
[~,jd]=min(c4(ii(k)-1:ii(k)))
idx(k)=ii(k)+jd-2
end
a(idx,:)=[]
Kategorien
Mehr zu Matrices and Arrays finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!