Wie kann ich die plot-Vektoren unterschiedlicher Länge, die auf den gleichen Achsen in MATLAB?
Habe ich Mühe versucht, zu vergleichen und Handlung zwei Dateien unterschiedlicher Länge. In MATLAB-ich weiß nicht, wie plot zwei Vektoren unterschiedlicher Länge in der gleichen x-Achse. So eine Datei hat einige Daten fehlen, möchte ich eine Zeile erstellen und setzen Sie Leerzeichen für die entsprechenden Zeitstempel. Hier sind Beispiele von Daten-Dateien:
Datei 1:
date time T01 T02 T03 T04 T05
8/16/2009 0:00, 516.900024, 450.5, 465.200012, 546.799988, 539.700012
8/16/2009 0:10, 351.200012, 398.899994, 418.100006, 510.299988, 518.5
8/16/2009 0:30, 241.399994, 252.399994, 256, 360.600006, 386.5
8/16/2009 1:00, 184.199997, 154.300003, 143.899994, 236.600006, 244.399994
Datei 2:
date time T01 T02 T03 T04 T05
8/16/2009 0:00, 656.799988, 611.200012, 860.599976, 604.700012, 288.5
8/16/2009 0:10, 527.400024, 359.200012, 789.099976, 789.099976, 446.799988
8/16/2009 0:20, 431.5, 327.100006, 763.599976, 895.099976, 689.099976
8/16/2009 0:30, 328.399994, 301.700012, 824, 1037.099976, 955.299988
8/16/2009 0:40, 261.5, 332.200012, 811.700012, 962.200012, 915.599976
8/16/2009 0:50, 180.300003, 291.100006, 700.099976, 855.200012, 836.900024
8/16/2009 1:00, 294.399994, 281.399994, 731.299988, 881.700012, 666.200012
8/16/2009 1:10, 274.899994, 334.200012, 759.400024, 913.900024, 760.799988
Ich versuche remake Datei 1 wie folgt:
8/16/2009 0:00, 516.900024, 450.5, 465.200012, 546.799988, 539.700012
8/16/2009 0:10, 351.200012, 398.899994, 418.100006, 510.299988, 518.5
8/16/2009 0:20, ,,,,
8/16/2009 0:30, 241.399994, 252.399994, 256, 360.600006, 386.5
8/16/2009 0:40, ,,,,
8/16/2009 0:50, ,,,,
8/16/2009 1:00, 184.199997, 154.300003, 143.899994, 236.600006, 244.399994
8/16/2009 1:10, ,,,,
Gibt es eine Möglichkeit, dies zu tun? es würde mir sehr helfen, da ich versuche, link 2 Dateien basierend auf dem Zeitstempel.
p.s.: Ich bin versucht, die ismember
Funktion in MATLAB und bin mit allen möglichen Problemen.
- Keine Hilfe von jemand??
InformationsquelleAutor AP. | 2009-10-30
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nehme an, Sie sind zunächst das Lesen von Daten aus Dateien, wie beschrieben in der Antworten auf diese Frage. Wenn Sie die Zeit-Stempel (Umgerechnet DATENUM) und Daten aus den beiden Dateien gespeichert in der Variablen
fileData1
undfileData2
folgende ist eine einfache Möglichkeit zur Darstellung von Daten von jedem auf dem gleichen Satz von Achsen (mit der Funktion GRUNDSTÜCK und die HALTEN Befehl):Jede Zeile in der oben genannten Grundstück wird eine unterschiedliche Anzahl von Zeit-Punkten (also Kreis-Marker), aber jeder wird eine kontinuierliche (also ununterbrochene) Linie. Wenn Sie wollen, um zu zeigen, Pausen in der Handlung, wo es fehlt-Zeit-Stempel haben, können Sie pad die Daten aus Datei 1 mit NaN Werte. Wenn Sie sicher wissen, dass es nie Zeit-Stempel in die kleinere Datei, die nicht in die größere Datei ist (D. H. die Zeit-Stempel in der kleineren Datei sind eine Teilmenge der Zeit-Stempel in die größeren), dann können Sie mit der Funktion ISMEMBER wie folgt:
Wenn es sind Zeit-Stempel in die kleinere Datei, die nicht in den größeren, dann haben Sie sich für eine Lösung auf der Grundlage der SCHNEIDEN Funktion (wie dargestellt in meine Antwort auf deine andere Frage im Zusammenhang mit).
Nun kann man die Darstellung der Daten mithilfe der folgenden:
Hier ist ein Beispiel der Differenz NaN-Polsterung macht beim Plotten (mit einigen zufällig generierten Daten):
data
aussieht. Ist es eine N-by-2 Zelle-array mit einer Zahl pro Zelle? Oder ist es ein 1-by-2 Zelle-array, wobei jede Zelle enthält eine N-by-1-Vektor? Der erste Fall kann behandelt werden wie diese:plot([data{:,1}],[data{:,2}]);
Und der zweite Fall kann behandelt werden wie diese:plot(data{1},data{2});
Ohne mehr Details über das, wasdata
aussieht, das ist die beste, die ich beantworten kann.data = xlsread(...);
? Mit XLSWRITE wird einfach nur wieder ein logisches flag mit dem Wert vondata
angibt, ob der Schreibvorgang erfolgreich war. Wenn Siedata = xlsread(...);
Ihre matrixdata
wird ein numerisches array, nicht ein cell-array, so sollten Sie in der Lage zu zeichnen Sie es mitplot(data(:,1),data(:,2))
.file
. Diese Saiten verursacht die Fehler, die Sie immer waren. Du hast zu Holen, nur die Zellen mit numerischen Werte, die Sie für das Plotten. Wenn deine Saiten sind nur in der oberen Zeilefile
sollte diese Arbeit:plot([file{2:end,1}],[file{2:end,2}]);