2016-11-19 1 views
-2

J'utilise Fortran 95, et maintenant je suis face à un problème comme suit:Comment organiser les données de différents fichiers de données dans Fortran

  • J'ai 8 datafiles avec 4 colonnes chacun, ils sont générés par un autre programme (chaque fichier contient les solutions d'équations différentielles pour différents ensembles de conditions initiales).
  • La 4ème colonne est ma variable x et la 2ème colonne est f(x).
  • Donc, tout ce que je veux est de créer un nouveau fichier avec 9 colonnes (avec le x dans le premier et le f(x) de chaque fichier dans les autres colonnes).
  • Cependant, chaque fichier a des valeurs différentes pour x (et ses f respectifs), comme 1,10, 1,30 et 1,40 dans un et 1,15, 1,25 et 1,42 dans les autres.
  • Donc, c'est bon pour moi de prendre un "groupe" dans x, comme [1,00; 1,20] et écrire dans mon nouveau fichier cette valeur moyenne comme x, puis exécutez le f(x) dans ce groupe en dessous.

Mais je ne pouvais pas réussi comment le faire.

+0

A en juger par vos tags, vous souhaitez tracer vos données avec gnuplot? Pourquoi ne pas tracer tous les fichiers comme ceci: 'plot 'file1.dat' u 4: 2'? –

+0

Oui, je veux tracer, mais je dois aussi entrer dans un autre programme le fs pour le même xs ... – atMalkyor

+2

il semble que vous voulez utiliser l'interpolation pour donner à tous vos ensembles de données les mêmes x-vals. C'est vraiment hors de portée de ce site jusqu'à ce que vous ayez du code avec lequel vous rencontrez des problèmes. – agentp

Répondre

1

Je voudrais essayer tracer les fichiers avec une option smooth csplines dans un fichier temporaire:

set format x "%10.3f" 
set format y "%10.3f" 

set xrange [...] 
set samples ... 

set table "temp1.dat" 
plot 'file1.dat' using 4:2 smooth csplines 
unset table 

Cela fonctionne si vous pouvez vivre avec l'interpolation spline. Il n'y a aucun moyen d'imprimer des points interpolés linéairement au format csv. Vous pourriez vouloir apprendre un peu de Fortran (demandez si vous en aurez besoin pour vos recherches ultérieures) pour faire l'interpolation linéaire. Ou tout autre langage de programmation.

Pour tracer tous les fichiers avec une commande par exemple vérifier les réponses sur Loop structure inside gnuplot?

Ensuite, sur linux, vous pouvez combiner les données générées à l'aide colrm et paste.

cat temp1.dat | colrm 11 > x 
cat temp1.dat | colrm 1 11 | colrm 12 > y1 
cat temp2.dat | colrm 1 11 | colrm 12 > y2 
... 

paste x y1 y2 ... > combined.dat 

Ajustez les constantes si nécessaire.

Encore une fois, l'apprentissage d'un langage de programmation pourrait également aider.

+0

Il n'y a que 3 façons d'obtenir de bons résultats en physique ... – Holmz