Sie können den Block/die Matrix von Interesse "manuell" auswählen und dann diese vorverarbeitete Eingabe an Gnuplot übergeben, um sie zu visualisieren. Zum Beispiel:
getMatrix(fName, i) = sprintf("<sed -n -e'%d,%dp' '%s'", 2*i-1, 2*i, fName)
plot getMatrix('test.dat', 2) matrix w image
Hier Gnuplot „sieht“ nur der Ausgang des sed
Befehls, der aus der Datei filtert test.dat
nur Linien 3 und 4, das heißt die Matrix Sie in Ihrem Beitrag zeigen.
EDIT:
Die Anweisung
getMatrix(fName, i) = sprintf("<sed -n -e'%d,%dp' '%s'", 2*i-1, 2*i, fName)
eine Funktion zum gegebenen Dateinamen und den Matrixindex (angenommen 1-Basis sein) definiert, welche Konstrukte zunächst eine Zeichenfolge, die den Plottbefehles enthält, die dann übergeben wird zu plot
. Beispiel: Für i=1
und Datei test.dat
sieht der Befehl wie <sed -n -e'1,2p' 'test.dat'
aus. Wenn man Gnuplot anweist, ein solches "Ding" zu zeichnen, führt es den Befehl nach dem führenden <
aus und zeichnet seine Ausgabe (anstelle der gesamten Datei test.dat
). In diesem speziellen Fall extrahiert sed
nur Zeilen mit Zeilennummern (1-basiert) von 1
bis 2
(inklusive).
Um dies N
für Matrizen der allgemeinen Größe zu erweitern (unter der Annahme, dass die Datei verarbeitet wird entsprechende Anzahl von Spalten), könnte man zum Beispiel tun:
unset key
getMatrix(fName, N, i) = sprintf("<sed -n -e'%d,%dp' '%s'", (i-1)*N + 1, i*N, fName)
do for [i=1:2] {
plot getMatrix('test.dat', 10, i) matrix w image
pause 5
}
Die einzige hier Änderung ist die zusätzlichen Parameter N
Bezeichnet die Größe der einzelnen Matrizen und wie der Zeilenbereich berechnet wird ...
Können Sie die Zeile 'getMatrix (fName, i) = sprintf ("
Samuel
@Samuel Ich habe in der Antwort mehr Details zur Adressierung dieser ... – ewcz
Perfect. Klappt wunderbar! – Samuel