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

Paramètres du compte.

Topic

ValuesInInterval in einer Schleife

Page d'accueil ' Communauté ' Généralités ' ValuesInInterval dans une boucle

Voir les messages de 6 - 1 à 6 (sur un total de 6)
  • Auteur
    Messages
  • #34572
    Stefan Wyler
    Participant

    Hallo Zusammen,
    Ich lese aus einem Geschwindigkeitssignal 0 – 70 km/h in 5 km/h Abschnitten den Index heraus. ValuesInInterval erlaubt für die Grenzwerte “Lower und upper Limit” nur Einzelwerte. Wie kann ich die Such enach den Indexen automatisieren?

    #34577
    Stefan Wyler
    Participant

    Hallo Zusammen,
    Ich lese aus einem Geschwindigkeitssignal 0 – 70 km/h in 5 km/h Abschnitten den Index heraus. ValuesInInterval erlaubt für die Grenzwerte “Lower und upper Limit” nur Einzelwerte. Wie kann ich die Such enach den Indexen automatisieren?

    #34573
    Bernhard Kantz
    Participant

    Wie bereits der Titel des Eintrags andeutet, kann dies durch eine Schleife in einer FPScript-Formel automatisiert werden. Da die Datensätze der ermittelten Indizes wahrscheinlich unterschiedlich lang sein werden, sollten diese in einer Liste gesammelt werden. Das folgende Codebeispiel erzeugt eine Liste (mit Elementname der Form “15-20 km/h”) der gefundenen Indizes:
    [code]Dim val = Geschwindigkeit
    Dim res
    For lower = 0 To 70 Step 5 Do
    Dim upper = lower + 5
    Dim idx = ValuesInInterval(val, lower, upper)
    res := List(String lower : “-” : String upper : ” km/h”, idx)
    End
    res
    [/code]
    Hat diese Formel den Namen ‘Bereiche’ so liefert [code]Bereiche.[“30-35 km/h”][/code] den Indexdatensatz zu diesem Geschwindigkeitsintervall. Alternativ kann auch [code]Bereiche.[6][/code] angegeben werden, da es sich um den 7. Eintrag handelt (der Elementenindex ist nullbasiert!).
    Natürlich können die Elementnamen den eigenen Bedürfnissen angepasst werden sofern sie eindeutig sind.

    #34574
    Stefan Wyler
    Participant

    Das funktioniert aber noch nicht optimal. Jetzt habe ich die einzelnen Geschwindigkeitssegmente welche mit “Aus” (Anfangsindex und Endindex) ausgelesen werden. Zur Anwendung dieser beiden Werte (die Liste hat 13 Zeilen) auf ein Beschleunigungsignal muss ich den Anfangs- und Endwert herauslesen (indexieren) aber das funktioniert nicht. Wie kann ich das Listelement weiterverarbeiten?

    Dim val = v_fz
    Dim res
    For speed = 5 To 65 Step 5 do
    Dim low = speed – 2
    Dim upper = speed + 2

    Try
    Dim idx = ValuesInInterval(val, low, upper, EVENT_INDEX, 1.5)
    Dim A_F = idx[1n]*25
    Dim A_L = idx[-1n]*25

    Catch idx
    A_F = 0
    A_L = 0
    End

    Dim Aus = {A_F , A_L}
    res := List(String low :”-” : String upper : “km/h”, Aus)

    End
    res

    #34575
    Bernhard Kantz
    Participant

    Die Funktion [b]ValuesInInterval()[/b] liefert alle Indizes deren Werte im angegebenen Intervall liegen. Falls Sie nur an der ersten Überschreitung einer minimalen bzw. maximalen Grenze interessiert sind, wäre die Funktion [b]NextLevelCrossing()[/b] geeigneter.
    In Ihrem Code greifen Sie auf den zweiten und den letzten Index der Werte im aktuell angegebenen Intervall zu und multiplizieren ihn mit 25, gibt es dafür einen speziellen Grund? Eine ausführlichere Beschreibung könnte vielleicht das Problem erhellen.

    #34576
    Stefan Wyler
    Participant

    Mit dem Faktor 25 werden die unterschiedlichen Samplinraten vom GPS- zum Beschleunigunssignal korrigiert.

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