-
FlexPro
- Auf einen Blick
- Features & Optionen
- Einsatzgebiete
- Alle Vorteile
- Neu in FlexPro 2021
- FlexPro gratis testen
- FlexPro View OEM Freeware
- Kaufberatung
- Login
- Language
- +49 6894 929600
- infoweisang.com
- Google Maps
- Produkte
- News
- Support
- Unternehmen
- Jobs
- Kontakt
- Login
- Language
- +49 6894 929600
- infoweisang.com
- Google Maps
Diagrammdarstellung: Signalabschnitt auf Signalabschnitt
- Dieses Thema hat 6 Antworten sowie 4 Teilnehmer und wurde zuletzt vor vor 4 Jahren, 6 Monaten von Stefan S. aktualisiert.
-
AutorBeiträge
-
September 14, 2012 um 9:58 am Uhr #12786AnonymGast
Hallo,
ich habe einen Datensatz mit x (Winkel)- und y (Druck) Werten. Der Signalverlauf läuft “nahezu” unverändert ab.
Gibt es eine Möglichkeit in einer 2D-Diagrammansicht den Signalverlauf alle 360° auf den vorigen Signalverlauf zu setzen, um so die Veränderung des Signals über den gesammten Datensatz zu erhalten (Signalabschnitt auf Signalabschnitt).
Mit freunlichen Grüssen
P. Müller
September 14, 2012 um 9:58 am Uhr #8444AnonymGastHallo,
ich habe einen Datensatz mit x (Winkel)- und y (Druck) Werten. Der Signalverlauf läuft “nahezu” unverändert ab.
Gibt es eine Möglichkeit in einer 2D-Diagrammansicht den Signalverlauf alle 360° auf den vorigen Signalverlauf zu setzen, um so die Veränderung des Signals über den gesammten Datensatz zu erhalten (Signalabschnitt auf Signalabschnitt).
Mit freunlichen Grüssen
P. Müller
Oktober 11, 2012 um 11:18 am Uhr #9252Bernhard KantzTeilnehmerEine Möglichkeit wäre die Zerlegung des Signals (Druck (Y) über Winkel (X)) in Vielfache von 360 °. Diese könnte man dann als Wasserfalldiagramm visualisieren.
Die folgende FPScript-Formel nimmt diese Zerlegung von Signal in eine Signalreihe mit zweidimensionaler X-Komponente vor.// Anzahl Perioden Dim N = NextHighestInteger(Range(Signal.X) / 360 °) // Anfänge der Perioden Dim idx = SearchValue(Signal.X, (N + 1, Signal.X[0], 360 °)) // Länge der Perioden Dim len = idx[1,-1] - idx[0,-2] // Signal zerlegen Dim matX = ? # Maximum(len) # N Dim matY = ? # Shape(matX) For Each Column k In matX Do // verschieben um Vielfaches der Periodenlänge matX[k][0,len[k]-1] = Signal.X[idx[k], idx[k+1]-1] - k * 360 ° matY[k][0,len[k]-1] = Signal.Y[idx[k], idx[k+1]-1] End Signal(matY, matX)
Mai 7, 2020 um 11:42 am Uhr #26906Robert DemmelTeilnehmerHallo zusammen,
wie würde denn die Formal aussehen wenn die x-Achse eine Zeitachse ist und ich als Periodenanfang einen steigende Flanke (Signal überschreitet 0,05V) habe.
Mit freundlichen Grüßen
R.Demmel
Mai 8, 2020 um 10:10 am Uhr #27016Bernhard KantzTeilnehmerHierfür sind die Ermittlung der Indizes und die Verschiebung der X-Komponente der einzelnen Perioden anzupassen.
Durch die verbesserte Unterstützung der Liste als Datenstruktur in FlexPro würde ich statt eine Signalreihe eine Liste der individuellen Perioden erzeugen lassen. Übrigens wird dies mit der nächsten Hauptversion (FlexPro 13) in der Ereignisisolation als neue Ergebnisart direkt unterstützt werden.
In der Zwischenzeit kann man folgendes FPScript-Codeexzerpt verwenden:
// Indizes der Flanken Dim idx = LevelCrossings(Signal, 0.5, 0.05, EVENT_POSITIVE) // in Liste zerlegen Dim res = List() For Each Row i In idx Do If i > 0L Then res := XScale(Signal[idx[i - 1L], idx[i] - 1L], -Signal.X[idx[i - 1L]]) End End res
Tipp: Wenn der Cursor in einem Funktionsnamen (wie LevelCrossings oder XScale) steht, kann man mit der F1-Taste die Onlinehilfe für diese Funktion anzeigen lassen.
- Diese Antwort wurde geändert vor 4 Jahren, 6 Monaten von Bernhard Kantz.
- Diese Antwort wurde geändert vor 4 Jahren, 6 Monaten von Bernhard Kantz.
- Diese Antwort wurde geändert vor 4 Jahren, 6 Monaten von Bernhard Kantz.
Mai 14, 2020 um 4:22 pm Uhr #27187Robert DemmelTeilnehmerHallo Hr. Kantz,
Vielen Dank,
Ich hab das mal so bei mir als Funktion integriert.
Arguments sig // Damit weitere Signale passend zugeschnitten werden
// Indizes der Flanken
Dim idx = LevelCrossings(Signal, 0.2, 0.1, EVENT_POSITIVE) //Signal (geeignet für die Flanken)
// in Liste zerlegen
Dim res = List()
For Each Row i In idx Do
If i > 0L Then
res := XScale(sig[idx, idx – 1L], -‘Verstrichene Sekunden _s_'[idx])
End
Endsig = res[Empty ,20] // nach dem Cut sind in diesem Fall nur die ersten 20s notwendig
Funktioniert soweit recht gut!
Mein Problem dabei ist dass das letzte Event ignoriert wird! Wie kann man da Abhilfe schaffen?
Mai 15, 2020 um 9:38 am Uhr #27194Stefan S.ModeratorWenn Sie Ausschnitte bilden und der Index der positiven Flanke bildet das Ende des Ausschnitts, so fehlt natürlich der letzte Abschnitt. In diesem Fall sollten Sie nach negativen Flanken suchen bzw. besser noch nach positiven und negativen, um den exakten Ausschnitt zu ermitteln.
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.