Comment puis-je tracer la dérivée d'un graphique gnuplot?
J'ai un ensemble de mesures d'une variable au cours du temps. J'ai ces mesures dans un fichier appelé "résultats" avec ce format:
# time sample
0 5
12 43
234 342
etc...
Je peux facilement le tracé de cette, dans gnuplot avec:
plot "results"
Est-il possible de tracer la dérivée de ces mesures à l'égard de temps (c'est à dire dsample/dt) directement à partir de gnuplot, ou dois-je calculer la dérivée séparément et l'intrigue que directement dans gnuplot?
OriginalL'auteur Nathan Fellman | 2013-04-01
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire en définissant une fonction pour prendre les dérivés:
d2(x,y) (qui est probablement ce que vous cherchez) calcule montée sur exécuter (delta y sur le delta x), mais le premier point de données, et d(y) calcule delta y de la même façon. Compte tenu de ce fichier de données
Le résultat est
approche intéressante, vous devez ajouter un peu de explination. Aussi je pense que cela peut être modifié pour tracer la dérivée au milieu entre les données initiales au lieu - pourrait avoir l'air un peu mieux. En fin de compte je pense que trouver le bon outil pour le travail s'applique ici, mais..
Je ne pouvais pas être plus d'accord. Alors que vous faire cela avec gnuplot, je ne sais pas ce que vous doit. Il serait beaucoup plus facile à comprendre/modifier si vous a écrit un petit script pour prendre les dérivés dans une autre langue courante que dans gnuplot je pense.
J'ai mis à jour les fonctions un peu, maintenant qu'elle met les dérivés des points au milieu des données. Je suis certainement d'accord qu'il fait habituellement de sens de faire ce genre de traitement à l'extérieur de gnuplot. Je garde ces fonctions dans mon
.gnuplot
fichier pour un quick-and-dirty regarder les produits dérivés. J'ai habituellement étroitement espacés de données de sorte que le décalage n'est pas grave si je suis juste à la recherche pour des emplacements de minima/maxima.OriginalL'auteur andyras
Une alternative (plus générique) de la syntaxe de tracer la dérivée est donnée ici par Viktor T. Toth
Explication: Le fichier de données modificateur (après à l'aide de) dans les crochets doit être interprété comme le résultat d'un calcul des coordonnées du point (x):(y), calculé ligne par ligne dans le fichier de données. Pour chaque ligne, les valeurs de la colonne ($1, $2, ...) sont modifiés par les permis à des opérations arithmétiques. La valeur du support est la dernière expression dans une liste séparée par des virgules des expressions. Les deux premières sont évaluées en premier et stockées dans des variables, qui sont utilisés plus tard et pour la ligne suivante. Un pseudo-code pour la syntaxe ci-dessus:
Supplémentaire: Cette explication peut également être utilisé pour interpréter @andryas solution à la dérivée de la fonction d2(x,y). La seule différence étant l'utilisation de $0. 0 $en gnuplot est le 'zéro' colonne du fichier, le numéro de ligne (comme dans une feuille de calcul, après avoir ignoré les lignes de commentaires dans le fichier de données).
$0==0?
vérifie si c'est la première ligne et attribue une 1/0 (NaN) de sorte que la commande plot ignore et n'a pas de complot. Toutefois, le code est correct que si la durée de l'intervalle est fixé (dans le cas ci-dessus de 0,5). D'autre part, Viktor code calcule l'intervalle de temps pour chaque ligne.OriginalL'auteur Sunthar