2017-09-07 8 views
0

Ich habe eine Reihe y, die Werte enthält, von denen einige sind NaN einige numerische (double).Datetick berücksichtigen NaN in Handlung

Die Serie hat einen verknüpften Vektor d, der die datenum Daten enthält.

Beispiel:

y=[NaN(5,1); rand(10,1)] 
d=now-14:now 

Wenn ich laufen:

plot(d,y) 

ich das Diagramm Ich will bekommen; Die NaN-Beobachtungen werden herausgenommen.

Allerdings, wenn ich laufe:

plot(d,y); datetick 

dann von Anfang an meinem Graph beginnt und berücksichtigt alle Beobachtungen (auch wenn y ein NaN ist).

Wie kann ich dies verhindern?

+1

Warum nicht einfach die NaNs entfernen? 'Grundstück (d (isfinite (y)), y (isfinite (y));. Datetick' – buzjwa

+0

Dies scheint eine Art von Fehlern/Inkonsistenz von Matlab zu sein Naveh der Abhilfe scheint angemessen – m7913d

Antwort

2

Von the documentation können wir sehen, dass es eine einfache Möglichkeit (siehe unten), um die aktuellen Achsen Grenzen zu bewahren.

plot(d,y); 
datetick('keeplimits'); 

Das 'keeplimits' Argument macht genau das, was es schon sagt, die Aufrechterhaltung der x-Achse Grenzen, während die Umwandlung der tick-Werte zu Terminen. Sie können auch 'keepticks' übergeben, um Teilstriche zu erhalten.


Das Verhalten Sie scheint auf die docs Gegenteil beschreiben:

datetick wählt ein Etikettenformat auf dem Minimum basiert und Höchstgrenzen der angegebenen Achse.

Aus dieser Aussage, die ich die Werte gleich bleiben erwarten würde, aber es ist offensichtlich etwas über die Art und Weise der Grenzen intern gehandhabt werden, was bedeutet, dass die NaN Punkte enthalten sind. Zumindest bekommen wir eine einfache Arbeit!

+1

Ich bin nicht einverstanden, dass es wird erwartet, /. konsistentes Verhalten. Die Standard-x-Grenzen berücksichtigen 'NaN' nicht, während 'datetick' das tut.Allerdings ist zumindest ein schöner Workaround.'' keeplimits'' ist nützlich, wenn Sie den Bereich manuell einstellen. – m7913d