Multiplier un fichier de données

Résolu/Fermé
toto5812 Messages postés 57 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 21 janvier 2015 - 12 mars 2010 à 22:15
toto5812 Messages postés 57 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 21 janvier 2015 - 13 mars 2010 à 17:10
Bonjour,
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:

8 réponses

dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 5 619
13 mars 2010 à 09:18
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,
$ 
1
toto5812 Messages postés 57 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 21 janvier 2015
13 mars 2010 à 13:51
Ok, merci!

Et pour enregistrer le résultat dans un autre fichier, "v" par exemple??

Merci
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
13 mars 2010 à 14:04
Salut,

awk -F, -v cal=$CAL '{for(n=1;n<NF;n++)printf $n*cal*0.04 FS;print ""}'  u > v
0
toto5812 Messages postés 57 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 21 janvier 2015
13 mars 2010 à 00:14
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
0
toto5812 Messages postés 57 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 21 janvier 2015
13 mars 2010 à 14:10
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
0
dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 5 619
13 mars 2010 à 15:52
montre ton locale:
set|egrep 'LOCAL|LC'
locale
0
toto5812 Messages postés 57 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 21 janvier 2015
13 mars 2010 à 15:58
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=
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 5 619
13 mars 2010 à 15:59
et
locale
locale -c LC_NUMERIC
0
toto5812 Messages postés 57 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 21 janvier 2015
13 mars 2010 à 16:02
~$ locale -c LC_NUMERIC
LC_NUMERIC
,

3;3
44
32
UTF-8
0
dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 5 619
13 mars 2010 à 16:16
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
0
toto5812 Messages postés 57 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 21 janvier 2015
13 mars 2010 à 16:43
merci, ça marche!
0
toto5812 Messages postés 57 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 21 janvier 2015
13 mars 2010 à 17:10
Bon, maintenant grace à vous, je peux convertir les valeurs de l'ordonnée en tension.

Merci
0