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

Signal bei Peak schneiden - Totzeit

 

NewBeeGuest
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 13.06.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2019, 14:00     Titel: Signal bei Peak schneiden - Totzeit
  Antworten mit Zitat      
Hallo zusammen,

ich bin MATLAB-Neuling und würde gerne ein gemessenes Signal (Beschleunigung über Zeit) in verschiedene Abschnitte zerteilen/ schneiden und dann jeweils eine FFT der Abschnitte machen.

Das Signal selbst ist an einem rotierenden Prüfkörper aufgenommen worden und hat einmal pro Umdrehung in der z-Achse einen Peak. Diesen würde ich gerne als Trigger für das Schneiden benutzen.

Mein Ansatz:
Wenn der y-Wert der z-Achse über 600 m/s^2 steigt, schneide das Signal (also y-Werte und dazugehörige x-Werte bzw. Zeit). Ab dem Peak soll dann 0,02 Sekunden davor und 0,02 Sekunden danach geschnitten werden.
Damit ich ein doppeltes Schneiden aufgrund von eventuellem Rauschen im Signal verhindern kann, würde ich gerne soetwas wie eine Totzeit einfügen. Also suche den Peak, wenn gefunden, schneide das Signal, suche aber erst wieder nach 0,1 s wieder nach einem neuen Peak.

Erste Idee:
Code:
Messungen = Load('Messdata_HDF.mat'); % Messdaten als "struct" laden

Schrittweite = Messungen.shdf.Tags.u_Happj.Duration/(Messungen.shdf.Tags.u_Happj.NbrofSamples-1);
x = Messungen.shdf.Tags.u_Happj.Start:Schrittweite:Messungen.shdf.Tags.u_Happj.Start+Messungen.shdf.Tags.u_Happj.Duration % Werte x-Achse (Zeit) einlesen/speichern
y = Messungen.shdf.Data(2,:); % Werte der z-Koordinate (Messung) auslesen und als y-Wert für Plot und FFT einlesen/speichern

if y>600
for i=1:n
x_schnitt_i = ... % 0,02 s davor und 0,02 s danach in neue Matrix oder Vektor speichern
% evtl. "wait 0,1s"?

% x-Werte dazu in passende Matrix einfügen
 


Sollte ich eine if oder besser eine for Funktion nutzen?

Meine Messdaten liegen in einem "struct" bei MATLAB vor. In "Messungen.shdf.Data" sind für die Raumrichtingen und Sensoren die gemessenen Werte jeweils in einer Zeile pro Koordinate eingetragen. Die Spalten sind einfach hochlaufend nummeriert. Die Zeit bzw. x-Achse ist leider nicht in der Matrix vorhanden, sodass ich sie mit dem Startwert, Endwert und der Schrittweite berechnen muss.

Ich würde mich sehr über Tipps zur Umsetzung meines Ansatzes freuen.

Vielen Dank! Smile
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.06.2019, 15:03     Titel:
  Antworten mit Zitat      
Hallo,

das sollte sich ohne if oder for erledigen lassen.
Schau dir mal islocalmax (mit Angabe von SamplePoints und MinSeparation) an.

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