Multiplier un fichier de données
Résolu
toto5812
Messages postés
66
Statut
Membre
-
toto5812 Messages postés 66 Statut Membre -
toto5812 Messages postés 66 Statut Membre -
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
Configuration: Linux / Mozilla 1.9.0.18
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.# 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:
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-
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 -
et
locale
locale -c LC_NUMERIC -
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 -
-
Bon, maintenant grace à vous, je peux convertir les valeurs de l'ordonnée en tension.
Merci