Filter data conditionally based on previous row
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
James Browne
le 26 Déc 2020
Réponse apportée : Image Analyst
le 26 Déc 2020
Hi,
I have an array of test data. I want to filter out conditionally rows which contain a value in one column that does not increase over the previous row.
I was able to do this in excel using the following if statement:
=IF(AND(AN9<=0,(AN9<AN8)),AQ9,IF(AND(AN9>=0,(AN9>AN8)),AQ9,NA()))
I think I essentially need it to return a logical value of zero if the value in the row of the column doesn't increase over the previous. A simplified example of what I want to do is:
1.0 5.0
1.3 6.0
3.1 3.0
2.0 2.0
1.9 6.0
1.8 7.0
2.4 8.0
3.5 1.0
would return:
1.3 6.0
3.1 3.0
2.4 8.0
3.5 1.0
Is there a way that I can perform something similar in Matlab?
Thanks for any help you can provide!
0 commentaires
Réponse acceptée
Image Analyst
le 26 Déc 2020
Try this. I think it's pretty self-explanatory.
m = [...
1.0 5.0
1.3 6.0
3.1 3.0
2.0 2.0
1.9 6.0
1.8 7.0
2.4 8.0
3.5 1.0 ]
col1Differences = [0; diff(m(:, 1))] % Get differences from one row to the next in column 1.
rowsToExtract = col1Differences > 0; % Get a logical vector of what rows have positive differences.
m2 = m(rowsToExtract, :) % Extract only those rows with a positive difference.
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Statistics and Linear Algebra dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!