FlexPro
HistoryBase
Ingénierie
Formation
Téléchargements
Assistance FlexPro
Connaissance
Communauté
À propos de nous
Références
Emplois
Contact général
Liste des revendeurs
Assistance FlexPro
FR
DE
EN
Porte-plaquette
Produits et solutions
Support et téléchargements
Entreprise
Magazine
Contact
Langue
MyWeisang

Paramètres du compte.

Topic

Diagrammdarstellung: Signalabschnitt auf Signalabschnitt

Page d'accueil ' Communauté ' Généralités ' Représentation graphique : section de signal sur section de signal

  • Ce sujet contient 6 réponses, 4 participants et a été mis à jour pour la dernière fois par Stefan S., le il y a 5 années.
Voir les messages de 7 - 1 à 7 (sur un total de 7)
  • Auteur
    Messages
  • #34388
    Anonyme
    Invité

    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

    #34390
    Anonyme
    Invité

    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

    #34389
    Bernhard Kantz
    Participant

    Eine 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 [i]Signal[/i] in eine Signalreihe mit zweidimensionaler X-Komponente vor.

    [code]
    // 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)
    [/code]

    #34391
    Robert Demmel
    Participant

    Hallo 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

    #34392
    Bernhard Kantz
    Participant

    Hierfü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.

    #34393
    Robert Demmel
    Participant

    Hallo 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[i – 1L], idx[i] – 1L], -‘Verstrichene Sekunden _s_'[idx[i – 1L]])
    End
    End

    sig = 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?

     

    #34394
    Stefan S.
    Maître des clés

    Wenn 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.

Voir les messages de 7 - 1 à 7 (sur un total de 7)
  • Vous devez être connecté pour répondre à ce sujet.