Multiplier un fichier de données
Résolu
toto5812
Messages postés
57
Date d'inscription
Statut
Membre
Dernière intervention
-
toto5812 Messages postés 57 Date d'inscription Statut Membre Dernière intervention -
toto5812 Messages postés 57 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je dispose d'un fichier "u" de données du type:
je souhaiterais le multiplier par un nombre (ou un autre fichier contenant un nombre constant), comment puis-je faire?
Merci
je dispose d'un fichier "u" de données du type:
# cat u -33,-33,-32,-34,-33,-34,-32,-33,-33,-33,-33,-33,-34,-33,-32,-33,-33,-32,-32,-33,-31,-35,-32,-31,-33,-33,-32,-34,-31, -31,-33,-34,-33,-33,-33,-32,-33,-33,-32,-32,-33,-32,-33,-31,-34,-34,-34,-33,-34,-34,-31,-32,-33,-32,-33,-33,-33,-33, -32,-33,-33,-33,-33,-32,-33,-31,-34,-32,-33,-32,-33,-34,-32,-33,-31,-33,-34,-33,-31,-33,-33,-32,-34,-33,-34,-34,-32, -34,-33,-33,
je souhaiterais le multiplier par un nombre (ou un autre fichier contenant un nombre constant), comment puis-je faire?
Merci
A voir également:
- Multiplier un fichier de données
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
8 réponses
hello
$ CAL=$(cat Cal1) $ echo $CAL 1.0E-1 $ awk -F, -v cal=$CAL '{for(n=1;n<NF;n++)printf $n*cal*0.04 FS;print ""}' u -0.132,-0.132,-0.128,-0.136,-0.132,-0.136,-0.128,-0.132,-0.132,-0.132,-0.132,-0.132,-0.136,-0.132,-0.128,-0.132,-0.132,-0.128,-0.128,-0.132,-0.124,-0.14,-0.128,-0.124,-0.132,-0.132,-0.128, -0.136,-0.124,-0.124,-0.132,-0.136,-0.132,-0.132,-0.132,-0.128,-0.132,-0.132,-0.128,-0.128,-0.132,-0.128,-0.132,-0.124,-0.136,-0.136,-0.136,-0.132,-0.136,-0.136,-0.124,-0.128,-0.132,-0.128, -0.132,-0.132,-0.132,-0.132,-0.128,-0.132,-0.132,-0.132,-0.132,-0.128,-0.132,-0.124,-0.136,-0.128,-0.132,-0.128,-0.132,-0.136, -0.128,-0.132,-0.124,-0.132,-0.136,-0.132,-0.124,-0.132,-0.132,-0.128,-0.136,-0.132,-0.136,-0.136,-0.128,-0.136,-0.132,-0.132, $
Bon, je ne peux plus modifier, alors je précise ce que je veux faire (merci de ne pas tenir compte du premier message, tout est dans celui-ci!):
je dispose d'un fichier "u" que je récupère d'un oscilloscope numérique. Ce sont les coordonnées de la trace, en pixel.
Je récupère également la valeur du calibre en tension dans le ficher "Cal1":
Dans un premier temps, je souhaiterais multiplier chaque valeur du fichier "u" par 0,04*Cal1
où 0,04 correspond à 4/100 (100 est l'amplitude maximale de la trace dans le fichier "u" pour 4 divisions) et Cal1 est la valeur contenue dans le fichier du même nom.
Comment puis-je faire en pratique (dans un script shell)???
Merci
je dispose d'un fichier "u" que je récupère d'un oscilloscope numérique. Ce sont les coordonnées de la trace, en pixel.
# cat u -33,-33,-32,-34,-33,-34,-32,-33,-33,-33,-33,-33,-34,-33,-32,-33,-33,-32,-32,-33,-31,-35,-32,-31,-33,-33,-32, -34,-31,-31,-33,-34,-33,-33,-33,-32,-33,-33,-32,-32,-33,-32,-33,-31,-34,-34,-34,-33,-34,-34,-31,-32,-33,-32, -33,-33,-33,-33,-32,-33,-33,-33,-33,-32,-33,-31,-34,-32,-33,-32,-33,-34, -32,-33,-31,-33,-34,-33,-31,-33,-33,-32,-34,-33,-34,-34,-32,-34,-33,-33,
Je récupère également la valeur du calibre en tension dans le ficher "Cal1":
# cat Cal1 1.0E-1
Dans un premier temps, je souhaiterais multiplier chaque valeur du fichier "u" par 0,04*Cal1
où 0,04 correspond à 4/100 (100 est l'amplitude maximale de la trace dans le fichier "u" pour 4 divisions) et Cal1 est la valeur contenue dans le fichier du même nom.
Comment puis-je faire en pratique (dans un script shell)???
Merci
ok, ça marche!
Par contre j'obtiens un fichier du type:
ou le séparateur est aussi la virgule... Du coup lorsque je veux faire apparaître le graphe sous octave, le résultat n'est pas bon.... Comment faire pour préciser que les nombres à virgules s'écrivent avec un point??
Merci
Par contre j'obtiens un fichier du type:
cat v 0,42,-0,42,-0,42,-0,4,-0,44,-0,44,-0,42,-0,44,-0,44,-0,44,-0,44,-0,44,-0,42,-0,44,-0,44,-0,42,-0,44,-0,44,-0,44,-0,44 ,-0,42,-0,44,-0,42,-0,44,-0,44,-0,44,-0,42,-0,44,-0,42,-0,44,-0,44,-0,44,-0,44,-0,42,-0,42,-0,42,-0,44,-0,44,-0,44, -0,44,-0,48,-0,48,-0,48,-0,48,-0,48,-0,5,-0,48,-0,48,-0,48,-0,48,-0,5,-0,5,-0,5,-0,48,-0,48,-0,48,-0,48,-0,5,-0,48, -0,5,-0,5,-0,48,-0,5,-0,5,-0,48,-0,48,-0,46,-0,48,-0,48,-0,48,-0,48,-0,48,-0,48,-0,48,-0,48,-0,48,-0,5,-0,52,-0,5,
ou le séparateur est aussi la virgule... Du coup lorsque je veux faire apparaître le graphe sous octave, le résultat n'est pas bon.... Comment faire pour préciser que les nombres à virgules s'écrivent avec un point??
Merci
montre ton locale:
set|egrep 'LOCAL|LC'
locale
set|egrep 'LOCAL|LC'
locale
voila le resultat:
$ set|egrep 'LOCAL|LC' MAILCHECK=60
$ locale LANG=fr_FR.UTF-8 LC_CTYPE="fr_FR.UTF-8" LC_NUMERIC="fr_FR.UTF-8" LC_TIME="fr_FR.UTF-8" LC_COLLATE="fr_FR.UTF-8" LC_MONETARY="fr_FR.UTF-8" LC_MESSAGES="fr_FR.UTF-8" LC_PAPER="fr_FR.UTF-8" LC_NAME="fr_FR.UTF-8" LC_ADDRESS="fr_FR.UTF-8" LC_TELEPHONE="fr_FR.UTF-8" LC_MEASUREMENT="fr_FR.UTF-8" LC_IDENTIFICATION="fr_FR.UTF-8" LC_ALL=
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
essaye
LC_NUMERIC="en_US.UTF-8" awk -F, -v cal=$CAL '{for(n=1;n<NF;n++)printf $n*cal*0.04 FS;print ""}' u
LC_NUMERIC="en_US.UTF-8" awk -F, -v cal=$CAL '{for(n=1;n<NF;n++)printf $n*cal*0.04 FS;print ""}' u
Et pour enregistrer le résultat dans un autre fichier, "v" par exemple??
Merci