Ich habe eine Datentabelle mit Zeitinkrementen von 0 -> n für jeden Schritt für eine Reihe von mehreren Schritten.
Ich frage mich, ob es ein bkm für das Skript gibt, damit jede Schrittzeit zur Endzeit des vorherigen Schritts beginnt.
aka:
Derzeit: Schritt 1, Zeit = 0 -> 7, Schritt 2, Zeit = 0 -> 12
Ziel: Schritt 1, Zeit = 0 -> 7, Schritt 2, Zeit 7 -> 19
Rat?
Säulen:
Sensoretikett | Wert | Zeit | Schritt
Hier ist eine Beispieldatentabelle und ein einfaches Skript, mit dem die Zeit angepasst wird, zu der sich der Schritt ändert.Das Skript zeigt die Datentabelle zuerst 10 Sekunden lang an, damit Sie sehen können, wie die ursprüngliche Tabelle aussieht. Anschließend wird das kleine Skript ausgeführt, um die Zeitwerte anzupassen.
Names Default To Here( 1 );
dt = New Table( "example",
Add Rows( 42 ),
New Column( "time",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 1,
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
)
),
New Column( "Step",
Character,
"Nominal",
Set Values(
{"Step1", "Step1", "Step1", "Step1", "Step1", "Step1", "Step1", "Step1",
"Step2", "Step2", "Step2", "Step2", "Step2", "Step2", "Step2", "Step2",
"Step2", "Step2", "Step2", "Step2", "Step2", "Step3", "Step3", "Step3",
"Step3", "Step3", "Step3", "Step3", "Step3", "Step3", "Step3", "Step3",
"Step3", "Step3", "Step3", "Step3", "Step3", "Step3", "Step3", "Step3",
"Step3", "Step3"}
)
)
);
wait(10);
For Each Row(
If( Row() == 1,
adder = 0,
If( Lag( :step ) != :step,
adder = :time[Row() - 1]
)
);
:time = :time + adder;
);das funktioniert super! Ich bemerke nur ein kleines Problem. In dem Zeitinkrement, in dem sich der Schritt ändert, wird der Zeitwert wiederholt, anstatt inkrementiert zu werden. Ich versuche immer noch, die LAG-Funktion zu verstehen. Irgendwelche Tipps?

Gibt es schließlich Tipps zum Hinzufügen von x-Achsen-Markierungen zum Skript, um die Blöcke der Ablaufverfolgung zu kennzeichnen?
Ich kann basierend auf Schritt # neue Spalten für lokales Min / Max erstellen, bin mir aber nicht sicher, wie ich das in eine Achsenbeschriftung schreiben soll.


In Bezug auf Ihr erstes Problem war Ihre Anforderung für das Inkrement zwischen den Schritten
Ziel: Schritt 1, Zeit = 0 -> 7, Schritt 2, Zeit 7 -> 19
Beachten Sie, dass der Zeitwert für den letzten Wert im ersten Schritt sowie für das erste Mal im zweiten Schritt gleich war.
Wenn Sie zwischen den Schritten inkrementieren möchten, ändern Sie einfach den Addiererwert auf das gewünschte zusätzliche Inkrement
adder = :time[Row() - 1] + 1
Ich verstehe nicht, wonach Sie fragen, wenn Sie sagen " Hinzufügen von x-Achsen-Markierungen zum Skript, um die Blöcke der Ablaufverfolgung zu kennzeichnen ".
Schließlich sind alle Funktionen, wie z. B. Lag (), im Skriptindex dokumentiert, der im Pulldown-Menü Hilfe verfügbar ist.