Phasenverschiebung zur Normalisierung von SinuswellendatenIch versuche, Sinuswellendaten so zu verschieben, dass alle minimalen Spitzen verschoben werden, um entlang der x-Achse zu liegen. Ich habe es mit diesem Code versucht, bin aber auf einen Fehler gestoßen mit " Soll Liste oder Zahl im Zugriff oder Auswertung von 'Matrix' sein , Matrix/*###*/(sineCol < < Get Values)"
Jede Hilfe wäre willkommen.
// Lade Daten
dt = Aktuelle Datentabelle ();
// Spalte mit Sinuswellendaten angeben
sineCol = dt << Spalte ("PITCH");
// SineCol in Matrix umwandeln
sineMat = Matrix(sineCol << Werte abrufen);
// Berechnen Sie den Index des minimalen Peaks
minIndex = Loc Min(sineMat);
// Berechnen Sie die Anzahl der Punkte, um die Daten zu verschieben
shiftPoints = N Zeilen (sineMat) - minIndex;
// Daten verschieben
shiftedSineCol = J(N Rows(sineMat), 1, .);
For(i = 1, i <= N Zeilen(sineMat), i++,
shiftedSineCol[i] = If(i <= shiftPoints, sineMat[shiftPoints-i+1], sineMat[N Rows(sineMat)-i+shiftPoints+1]);
);
// Tabelle verschobener Daten erstellen
newTable = New Table("PITCH Shifted", Add Rows(N Rows(dt)));
newTable["PITCH Shifted"] = shiftedSineCol;
newTable["TIME"] = dt:column("TIME");
// Tabelle speichern
newTable << Save("PITCH Shifted.jmp");
Grundlegende Datenanalyse und ModellierungBetreff: Phasenverschiebung zur Normalisierung von SinusdatenDer Verweis auf sineCol ist nicht korrekt
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
sineCol = dt << Column("name");
show(sineCol);
sineCol2 = Column(dt, "name");
show(sineCol2);
Hier sind einige optionale Möglichkeiten, um Werte aus einer kontinuierlichen Spalte in die Matrix zu bringen
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
sineMat1 = Column(dt, "height") << get values;
sineMat2 = dt[0, "height"];
show(sineMat1, sineMat2);Betreff: Phasenverschiebung zur Normalisierung von SinusdatenHallo, danke dafür, ich bin nicht sehr erfahren im Schreiben von Drehbüchern, können Sie mir erklären, wo ich diese aktualisierten Zeilen in das Drehbuch eingefügt habe. Und was ist der Unterschied zwischen SineMat1 und SineMat2.
Danke
Betreff: Phasenverschiebung zur Normalisierung von SinusdatenIch möchte unbedingt versuchen, mich mit Skripten vertraut zu machen, damit Sie dies verwenden können, damit Sie verstehen, was es tut (Drucken zum Debuggen von Skripten verwenden, auf Spalten aus Datentabellen verweisen und Werte aus dieser Spalte abrufen). SineMat1 und SineMat2 sind gleich, aber die Methode, wie die Werte aus der Datentabelle abgerufen werden, unterscheidet sich.
Sie würden den für Ihre sineCol und sineMat verwendeten Code durch entsprechende Datentabellen- und Spaltennamen ersetzen, unten ist ein Beispiel mit Big Class und Höhenspalte.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
sineCol = Column(dt, "height");
sineMat = Column(dt, "height") << get values;
Betreff: Phasenverschiebung zur Normalisierung von SinusdatenVielen Dank, dies ist nicht mein Fachgebiet. Ich versuche, einen Weg zu finden, meine Daten für meine Promotion zu visualisieren. Ich habe diesen Fehler und ich habe versucht, ihn zu beheben, kann es aber anscheinend nicht.
Hätten Sie einen Rat?
Ungültiger Index (muss Zahl oder Liste von Zahlen sein){395} im Zugriff oder Auswertung von 'Assign' , newTable["PITCH Shifted"] = /*###*/shiftedSineCol/*###*/
Betreff: Phasenverschiebung zur Normalisierung von SinusdatenDie Syntax nach dem Erstellen der neuen Tabelle scheint falsch zu sein, wenn Sie versuchen, eine Spalte zu erstellen? Ich würde vorschlagen, den JMP Scripting Index (über das JMP-Hilfemenü zu finden) und Skriptleitfaden (jmp.com) . Beide haben (manchmal) gute Beispiele für die .jsl-Syntax
Skriptindex:

Datentabellen (jmp.com)
Betreff: Phasenverschiebung zur Normalisierung von SinusdatenHast du JMP Pro? Wenn ja, dann die Funktionaler Daten-Explorer könnte nützlich sein. Es bietet viele Datenverarbeitungsfunktionen und passt Spline-Basisfunktionen an, um zyklische Daten zu analysieren. Möglicherweise müssen Sie nicht so viel codieren.