Effacer les filtres
Effacer les filtres

How to remove data points above or below a value in an array, nicely!

7 vues (au cours des 30 derniers jours)
ljp64
ljp64 le 2 Août 2018
Commenté : OCDER le 2 Août 2018
In my array (PRE_A, imported from a csv), I want to remove any data point over 900 or below 750, so have written the code below. How do I write this in less lines of code?
Thank you :)
PRE_A = PRE_A(PRE_A(:,2) > 750, :);
PRE_A = PRE_A(PRE_A(:,3) > 750, :);
PRE_A = PRE_A(PRE_A(:,4) > 750, :);
PRE_A = PRE_A(PRE_A(:,5) > 750, :);
PRE_A = PRE_A(PRE_A(:,6) > 750, :);
PRE_A = PRE_A(PRE_A(:,7) > 750, :);
PRE_A = PRE_A(PRE_A(:,8) > 750, :);
PRE_A = PRE_A(PRE_A(:,9) > 750, :);
PRE_A = PRE_A(PRE_A(:,2) < 920, :);
PRE_A = PRE_A(PRE_A(:,3) < 920, :);
PRE_A = PRE_A(PRE_A(:,4) < 920, :);
PRE_A = PRE_A(PRE_A(:,5) < 920, :);
PRE_A = PRE_A(PRE_A(:,6) < 920, :);
PRE_A = PRE_A(PRE_A(:,7) < 920, :);
PRE_A = PRE_A(PRE_A(:,8) < 920, :);
PRE_A = PRE_A(PRE_A(:,9) < 920, :);

Réponse acceptée

OCDER
OCDER le 2 Août 2018
Modifié(e) : OCDER le 2 Août 2018
I think this is what you're trying to do:
GoodRow = ~any(PRE_A(:, 2:9) <= 750 | PRE_A(:, 2:9) >= 920, 2)
PRE_A = PRE_A(GoodRow, :)
Translation:
GoodRow = ~ any (PRE_A(:, 2:9) <= 750 | PRE_A(:, 2:9) >= 920, 2)
Good rows do NOT have any value <= 750 OR any value >= 920, across all columns
  4 commentaires
ljp64
ljp64 le 2 Août 2018
You're a gem! Thankyou :)
OCDER
OCDER le 2 Août 2018
You're welcome!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by