WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Plateaus aus Signal entfernen

 

JanMar
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.01.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.01.2020, 12:33     Titel: Plateaus aus Signal entfernen
  Antworten mit Zitat      
Hallo zusammen,

auf meine Frage habe ich nach langer Recherche im Internet und Literatur leider keine passende Antwort gefunden, deshalb hoffe ich dass ihr mir womöglich helfen könnt.

Ich habe ein Beschleunigungssignal a mit ''Plateaus'' (siehe Anhang), welche ich für die weitere Bearbeitung gerne entfernen möchte.
Hierfür sollen immer nur die ersten Werte der Plateaus benutzt und anschließend verbunden werden.
(Die Plateaus sind entstanden, da das Messmodul eine höhere Abtastrate als der Beschleunigungssensor hat und sie stören bei der weiteren Bearbeitung des Signals)

Ich hoffe ihr versteht was ich meine und könnt mir evtl. bei der Umsetzung helfen.


Viele Grüße!

Signal.jpg
 Beschreibung:

Download
 Dateiname:  Signal.jpg
 Dateigröße:  101.31 KB
 Heruntergeladen:  341 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.01.2020, 13:53     Titel:
  Antworten mit Zitat      
Hallo,

mit anderen Worten, du willst Werte entfernen, die dem vorherigen Wert gleichen?
Code:
v( diff(v) == 0 ) = [];


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
JanMar
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.01.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2020, 11:55     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für deine Antwort.
Ist v in deinem Code eine Beispielvariable?
Es hat leider noch nicht funktioniert, wie kann ich das denn für mein Beschleunigungssignal a realisieren? Einfach a einsetzen hat auch keinen Erfolg gebracht..

Viele Grüße!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.01.2020, 19:44     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ist v in deinem Code eine Beispielvariable?

Ja.

Zitat:
Einfach a einsetzen hat auch keinen Erfolg gebracht.

Was heißt das? Bitte immer genau beschreiben.
Am besten einen Beispieldatensatz zur Verfügung stellen, mit dem man den Vorschlag testen haben.

Vielleicht liegt es daran: sind die Werte auf den Plateaus ungefähr gleich oder genau gleich?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
JanMar
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.01.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.01.2020, 13:27     Titel:
  Antworten mit Zitat      
Hallo,

die Werte der Plateaus sind genau gleich groß.
hier ein vereinfachtes Beispiel:
Code:

a=X.('Data1')(:);  %Beschleunigungssignal mit Plateaus
t=X.('Data2')(:);  %Zeitsignal
a(diff(a)==0)=[];

figure(1)
plot(t,a);
 


Ich bekomme die Fehlermeldung ''Vectors must be the same length'', das heißt es liegt wahrscheinlich an dem Zeitsignal. Wie kann ich das noch an die Problemstellung anpassen?

Danke und viele Grüße!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.01.2020, 13:46     Titel:
  Antworten mit Zitat      
Hallo,

das Problem ist also nicht beim Kürzen, sondern beim folgenden Plotten. Dazu muss man beide Vektoren kürzen, z.B. so:

Code:
toRemove = diff(a)==0;
a(toRemove) = [];
t(toRemove) = [];


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
JanMar
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.01.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.01.2020, 14:34     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank für die Hilfe! Jetzt hat es funktioniert (siehe Anhang).
Es sind jetzt immer die Endwerte des Plateaus verbunden, würde das gleiche auch für die Anfangswerte gehen, indem man z.B. die Plateubreite vom letzten Wert des Plateaus abzieht?


Viele Grüße

untitled.jpg
 Beschreibung:

Download
 Dateiname:  untitled.jpg
 Dateigröße:  165.21 KB
 Heruntergeladen:  327 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.01.2020, 14:50     Titel:
  Antworten mit Zitat      
Hallo,

Anpassung dazu sollte funktionieren:
Code:
toRemove = [false; diff(a)==0];


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
JanMar
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.01.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.01.2020, 14:57     Titel:
  Antworten mit Zitat      
Hallo,

genau so wollte ich es haben, super!

Vielen Dank und einen schönen Tag
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.