|
|
Sprung detektieren und filtern |
|
Alexfromgalax |
Forum-Anfänger
|
|
Beiträge: 48
|
|
|
|
Anmeldedatum: 28.05.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.08.2019, 09:42
Titel: Sprung detektieren und filtern
|
|
Hallo,
ich habe eine Matrix mit 15 Spalten und sehr vielen Zeilen. Siehe Anhang. In Spalte 12 wird der aktuelle Gang hinterlegt. Ich möchte nun einen Code schreiben, welcher einen Gangwechsel nach oben oder unten detektiert. Die Daten aller Spalten, eine Sekunde vor und eine Sekunde hinter dem Gangwechsel sollen aus der Matrix gelöscht werden. Die Zeit steht in Spalte 1 in der Einheit Sekunden.
Gibt es da eine schöne Funktion dafür? Ich weiß irgendwie gar nicht wo ich mit dem Problem anfangen soll.
Vielen Dank schonmal im voraus für eure Hilfe
Beschreibung: |
|
Download |
Dateiname: |
Ausschnitt Matrix Gangwechsel.PNG |
Dateigröße: |
94.59 KB |
Heruntergeladen: |
259 mal |
|
|
|
|
|
sijuherm |
Forum-Anfänger
|
|
Beiträge: 29
|
|
|
|
Anmeldedatum: 01.08.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.08.2019, 10:04
Titel:
|
|
Mal ein paar Denkanstöße:
Der gefahrene Gang ist immer konstant, bis zu einem Gangwechsel, da ändert er sich um 1. Hilfreiche Funktion wäre z.B.
diff
In Kombination mit der
find
Funktion erhälst du die Indizes der Schaltzeitpunkte in deiner Matrix.
Davon ausgehend kannst du die Zeitpunkte bestimmen und ebenfalls mit
find
alle Indizes suchen, die 1 Sekunde davor/dahinter sind.
Diese entfernst du aus der Matrix mit [], also z.B.
Falls du Probleme bei der Umsetzung hast, kannst dich gerne nochmal melden. Ein besserer Weg fällt mir gerade nicht ein, lerne aber gerne hinzu.
|
|
|
Alexfromgalax |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 48
|
|
|
|
Anmeldedatum: 28.05.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.08.2019, 14:22
Titel:
|
|
Vielen Dank für die sehr guten Tips. Mit find und diff funktioniert die suche schonmal ganz gut und ich bekomme auch die richtigen Zeilen ausgegeben in denen der Gangwechsel stattfindet.
Allerdings muss ich nach einigem Überlegen mein Vorhaben jetzt doch ein wenig ändern. Es soll wie folgt aussehen: Wenn ein Gangwechsel in Spalte 12 registriert wird, soll (nach unten laufend) die nächste Zeile gefunden werden bei der Spalte 7>=95. Ab dieser Zeile soll die nächste Zeile gesucht werden in der, in Spalte 1 mindestens 1 Sekunde vergangen ist. Der ganze Zeitraum von Anfang Gangwechsel bis Spalte 7 und Spalte 1 erfüllt soll gelöscht werden. Ich hoffe man kann das nachvollziehen
Gibt es eine Funktion die quasi eine Spalte absucht, aber nur genau den nächsten Wert ausgibt?
|
|
|
Alexfromgalax |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 48
|
|
|
|
Anmeldedatum: 28.05.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.08.2019, 14:58
Titel:
|
|
Wenn ich das richtig verstanden habe, kann ich bei der Funktion find am ende eine 1 anhängen die bewirkt, dass nur der Nächste Wert ausgegeben wird. Somit wäre das ja gelöst. Nun habe ich allerdings ein Problem bei den nächsten abfragen. Wie kann ich den nun der funktion sagen sie solle ab einer bestimmten Zeile den nächsten Wert in der Spalte suchen?
|
|
|
sijuherm |
Forum-Anfänger
|
|
Beiträge: 29
|
|
|
|
Anmeldedatum: 01.08.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.08.2019, 15:03
Titel:
|
|
X ist deine Matrix, die musst du entsprechend beschnitten übergeben, z.B.
idxSpalte7 ist dann quasi der Zeitpunkt, ab dem deine Sekunde läuft und du muss alles zwischen idxGangwechsel und idxSpalte7+1Sekunde löschen.
|
|
|
Alexfromgalax |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 48
|
|
|
|
Anmeldedatum: 28.05.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.08.2019, 15:34
Titel:
|
|
auf dieses ":end" bin ich einfach nicht gekommen.
Jetzt funktioniert es natürlich prima.
vielen Dank nochmal sijuherm
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|