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   -
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 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   4 896
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
montre ton locale:
set|egrep 'LOCAL|LC'
locale
0
toto5812 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
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 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
et
locale
locale -c LC_NUMERIC
0
toto5812 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
~$ locale -c LC_NUMERIC
LC_NUMERIC
,

3;3
44
32
UTF-8
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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   Statut Membre Dernière intervention  
 
merci, ça marche!
0
toto5812 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
Bon, maintenant grace à vous, je peux convertir les valeurs de l'ordonnée en tension.

Merci
0