Schrift
[thread]6455[/thread]

Matrix: Matrix erstellen

Leser: 1


<< |< 1 2 3 4 >| >> 38 Einträge, 4 Seiten
Gast Gast
 2004-08-03 17:13
#85301 #85301
Hallo, ich habe ein Problem, vielleicht kann mir ja jemand helfen.
Ich habe Messwerte (x- und y-Werte liegen jeweils in einer Datei), die ich mit gnuplot darstellen möchte. Dazu wollte ich eine Matrix definieren, kriege da aber leider nicht hin. Wie kann ich die Werte so bearbeiten, dass ich sie mit gnuplot darstellen kann?
MfG
Tim
esskar
 2004-08-03 17:25
#85302 #85302
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ich kenn gnuplot nicht;
wie rufst du es auf? gibts ne doku?
renee
 2004-08-03 17:40
#85303 #85303
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hier gibt's was gutes: http://www.rz.uni-osnabrueck.de/Zum_Nac....lot.pdf

@Tim: kannst Du vielleicht etwas genauer erklären, wie die Daten aussehen, die Du hast??
Am besten Du erstellst Dir so eine Datei, wie das Beispiel auf Seite 6 des oben genannten Skripts aussieht und rufst dann gnuplot auf!\n\n

<!--EDIT|renee|1091540434-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Dubu
 2004-08-03 22:30
#85304 #85304
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
@Tim: Bist du sicher, dass du dazu Perl brauchst?

Unter der Voraussetzung, dass du ein unixoides System benutzt:
Code: (dl )
1
2
$ paste xdaten.dat ydaten.dat > xydaten.dat
$ echo "plot 'xydaten.dat' w lp" | gnuplot -persist
Tim78
 2004-08-04 13:15
#85305 #85305
User since
2004-05-11
14 Artikel
BenutzerIn
[default_avatar]
Hi,
also erstmal vielen Dank für die Antworten.
@renee: Also meine Daten sehen folgenderrmaßen aus, ich habe Ergebnisse für N (Anzahl) und D (Durchmesser), die ich mit gnuplot graphisch darstellen will. Die Ergebnisse liegen folgendermaßen vor:
N ...... (46 Werte)
D .......(46 Werte)
N .......
D .......
usw.
Das Problem ist wohl, dass gnuplot die Werte folgendermaßen braucht
N D
Daher habe ich versucht, die jeweils 46 Werte mit split zu trennen, die dann in eigene Dateien zu schreiben und dann in einer Matrix wieder zusammenzufügen um das geforderte Datenformat zu erhalten. Leider hat das bisher irgendwie nicht so ganz geklappt...

@Dubu: Das Problem ist, dass ich die Werte für x- und y-Achse in zwei verschiedenen Dateien habe, ich glaube, dass gnuplot damit Probleme bekommt, oder??

Wäre super, wenn Ihr mir helfen könntet, verzweifel hier so langsam...
MfG
Tim
renee
 2004-08-04 13:31
#85306 #85306
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@Tim78: Herzlich Willkommen in der Perl-Community.de!

wie sind denn die Datensätze getrennt??

Hier mal ein Beispielcode
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#! /usr/bin/perl

use strict;
use warnings;

my $n_file = 'path/to/file_with_number.txt';
my $d_file = 'path/to/file_with_diameters.txt';
my $out = '/path/to/outfile.dat'

my @numbers = ();
my @diameters = ();

# anzahl einlesen;
open(R_N,"<$n_file") or die $!;
my @lines_n = <R_N>;
close R_N;
chomp(@lines_n);
foreach(@lines_n){
push(@numbers,split(/ /,$_));
}

# durchmesser einlesen
open(R_D,"<$d_file") or die $!;
my @lines_d = <R_D>;
close R_D;
chomp(@lines_d);
foreach(@lines_d){
push(@diameters,split(/ /,$_));
}

open(W_FILE,">$out") or die $!;
for(0..$#numbers){
print $numbers[$_]," ",$diameters[$_];
}
close W_FILE;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2004-08-04 13:35
#85307 #85307
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ups, ich habe da wohl was falsch verstanden... die Daten liegen ja schon in einer Datei vor... dann wohl eher so:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#! /usr/bin/perl

use strict;
use warnings;

my $n_file = 'path/to/file_with_number.txt';
my $out = '/path/to/outfile.dat'

my @numbers = ();
my @diameters = ();

# anzahl einlesen;
open(R_N,"<$n_file") or die $!;
my @lines_n = <R_N>;
close R_N;
chomp(@lines_n);
for(my $i = 0; $i < $#lines_n; $i += 2){
push(@numbers,split(/ /,$lines_n[$i]));
push(@diameters,split(/ /,$lines_n[$i+1]));
}

open(W_FILE,">$out") or die $!;
for(0..$#numbers){
print $numbers[$_]," ",$diameters[$_];
}
close W_FILE;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Tim78
 2004-08-04 14:53
#85308 #85308
User since
2004-05-11
14 Artikel
BenutzerIn
[default_avatar]
Hi,
erstmal vielen Dank, der erste Tipp war&´s übringens... Klappt auch eigentlich gnz gut, nur die Wertepaare müssen noch durch eine Zeile getrennt sein, d.h. nach jedem Paar brauche ich einen neuen Zeile.
Vielleicht kannst Du mir da auch noch helfen.
MfG
Tim
renee
 2004-08-04 15:45
#85309 #85309
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
zwischen open(W_FILE....) und close W_FILE; muss es so heißen:
Code: (dl )
1
2
3
for(0..$#numbers){
print W_FILE $numbers[$_]," ",$diameters[$_],"\n";
}


Da muss noch das W_FILE hinter print, damit auch in die Datei geschrieben wird und das "\n" erzeugt den Zeilenumbruch.
Die Fehler passieren halt, wenn man einen Schnellschuss postet...\n\n

<!--EDIT|renee|1091619979-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Tim78
 2004-08-04 15:59
#85310 #85310
User since
2004-05-11
14 Artikel
BenutzerIn
[default_avatar]
Super, es klappt. Vielen Dank, hat mir wirklich sehr geholfen.
Einen schönen Tag noch.
MfG
Tim
<< |< 1 2 3 4 >| >> 38 Einträge, 4 Seiten



View all threads created 2004-08-03 17:13.