#1 Thu 23 November 2017 07:16
- Samoht56
- Juste Inscrit !
- Date d'inscription: 22 Nov 2017
- Messages: 1
Code IDL bad values
Bonjour bonjour !
Bon normalement je ne me plante pas de section, enfin j'espère.
Voilà ce qui m'amène : j'ai à ma disposition 60 fichier .txt de données de matières en suspension dans le delta de l'Amazone, de janvier 2009 à décembre 2013. Mon objectif est de créer un graphique sous IDL me permettant de montrer l'évolution mensuelle en un pixel choisi dans le code. J'ai donc créé le cube de données comme il faut (data_all), mais au moment de la suppression des valeurs aberrantes, ça plante. Voilà mon code pour cette étape :
Code:
bad=where(data_all(*,*,i) lt 0 or data_all(*,*,i) gt 4000 or data_all(*,*,i), count) if count gt 0 then data_all(bad)=!VALUES.F_NAN
La boucle a été correctement réalisée, c'est dans cette partie là que ça plante je pense. Quand je fais tourner le code, et que je lui demande de me faire "print, data_all", il me met bien des NaN par-ci par-là, mais j'ai une valeur récurrente qui n'est pas supprimée : 55 537 ! Bon inutile de vous dire que 55 537 mg.L-1 de matières en suspension c'est clairement aberrant. D'autant que je lui ai demandé de passer en NaN toutes les valeurs supérieures à 4000 ! Dans le doute, j'ai rajouté l'expression : "
Code:
or data_all(*,*,i) eq 55537
", mais ça n'a rien changé. C'est un tantinet agaçant... Je précise que je suis novice en IDL.
Auriez-vous des pistes pour résoudre cet épineux problème de valeurs aberrantes ? Ai-je fait une bêtise dans mon code ?
Merci d'avance pour vos réponses !
Hors ligne
#2 Thu 23 November 2017 13:24
Re: Code IDL bad values
Bonjour,
Voici une réponse qui devrait vous aider pour un tableau à 4D. Vous pourrez certainement l'adapter pour votre array 3D:
http://www.idlcoyote.com/idl_way/smallexamples.html
exemple : Zeroing Columns of an Array
Cdlt
Florian
Hors ligne