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

Hüllkurve bei schlechtem Signal

 

dasjoki
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 29.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.03.2016, 17:29     Titel: Hüllkurve bei schlechtem Signal
  Antworten mit Zitat      
Hallo,
ich hab ein ziemlich schlechtes sinusförmiges Signal (Anhang) und möchte davon die Dämpfung berechnen. Ich möchte also eine Hüllkurve über das Signal legen und die untere Hülle von der Oberen subtrahieren. Diese Differenz wäre dann (ungefähr) meine gesuchte Dämpfung.

Problem ist, dass ziemlich viele lokale Extrempunkte auftreten und dadurch die Methode der Berechnung der Hüllkurve mittels Extrempunkte versagt. Gibt es einen Weg, nur die eindeutigen Extrempunkte zu bestimmen? Oder vielleicht kennt ja jemand eine ganz andere Methode die Hüllkurve/Dämpfung zu bestimmen?

Viele Grüße
Jojo

Signal.png
 Beschreibung:

Download
 Dateiname:  Signal.png
 Dateigröße:  7.3 KB
 Heruntergeladen:  282 mal
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.03.2016, 17:44     Titel: Re: Hüllkurve bei schlechtem Signal
  Antworten mit Zitat      
Hallo dasjoki,

Neben dem Sinus-Signal hast Du auch noch eine Drift, also ein Signal, dass linear abzunehmen scheint. Welche der beiden Teile möchtest Du messen?

Du könntest die Parameter einer gedämpften Sinus-Schwingung fitten lassen, so dass sie der Kurve am nächsten liegen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
dasjoki
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 29.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.03.2016, 19:00     Titel:
  Antworten mit Zitat      
Hallo,
ich möchte, dass es am Ende in etwa so aussieht (Anhang). Dabei möchte ich aber das Originalsignal verwenden und nicht das Geglättete.

Signal2.png
 Beschreibung:

Download
 Dateiname:  Signal2.png
 Dateigröße:  7.54 KB
 Heruntergeladen:  343 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Friidayy
Forum-Century

Forum-Century


Beiträge: 225
Anmeldedatum: 17.12.13
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 03.03.2016, 00:40     Titel:
  Antworten mit Zitat      
Hallo Joki,

im Prinzip ist das Problem hier mit einem deiner älteren Probleme vergleichbar http://www.gomatlab.de/viewtopic,p,160234.html#160234
Hast du für die Hüllkurve eine Ansatzfunktion? Bzgl. der Bestimmung der Extremalstellen kann ich dir die Funktion "findpeaks" empfehlen http://de.mathworks.com/help/signal/ref/findpeaks.html

Gruß

Zuletzt bearbeitet von Friidayy am 03.03.2016, 00:52, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 03.03.2016, 00:49     Titel:
  Antworten mit Zitat      
oder auch mal fex,google oder die doc nach der einhüllenden fragen.
auf english natürlich. da findet man schon so einiges.
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
dasjoki
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 29.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.03.2016, 16:55     Titel:
  Antworten mit Zitat      
So,
danke für eure wirklich zielführenden Antworten. Ich will natürlich auch meine Erfolge mit anderen teilen. Die findpeaks-Funktion ist wirklich goldwert. Jedoch findet man damit nur die Maxima. Will man die Minima finden, sollte man seine Funktion invertieren, findpeaks drüber laufen lassen und die Ergebnisse wieder invertieren. Hat bei mir super geklappt. Hier noch der Code:

Code:

    data=double(delete_ref);                                                                           % muss double sein
    data_inverse = -1.*delete_ref;                                                                     % inverse der Funktion um Minimas mit  findpeaks zu finden
    [maxpks,maxlocs] = findpeaks(data,'MinPeakDistance',round(period_length/2));
    [minpks,minlocs] = findpeaks(data_inverse,'MinPeakDistance',round(period_length/2));
    minpks = -1.*minpks;                                                                               % gefundene Minima zurückrechnen

    % Extrempunktvektoren um zwei Werte erweitern um Glättung der Hüllkurve am Anfang und am Ende
    % zu ermöglichen
   
    maxlocs2=zeros(1,numel(maxlocs)+2);
    for i = 1:numel(maxlocs)
        maxlocs2(1,i+1)=maxlocs(1,i);
        maxlocs2(1,1)=1;
        maxlocs2(1,end)=p;
    end;
   
    maxpks2=zeros(1,numel(maxpks)+2);
    for i = 1:numel(maxpks)
        maxpks2(1,i+1)=maxpks(1,i);
        maxpks2(1,1)=maxpks(1,1);
        maxpks2(1,end)=maxpks(1,i);
    end;
   
    minlocs2=zeros(1,numel(minlocs)+2);
    for i = 1:numel(minlocs)
        minlocs2(1,i+1)=minlocs(1,i);
        minlocs2(1,1)=1;
        minlocs2(1,end)=p;
    end;
   
    minpks2=zeros(1,numel(minpks)+2);
    for i = 1:numel(minpks)
        minpks2(1,i+1)=minpks(1,i);
        minpks2(1,1)=minpks(1,1);
        minpks2(1,end)=minpks(1,i);
    end;
   
    % obere und untere Hüllkurve

    envelope_max = pchip(maxlocs2,maxpks2,1:1:p);
    envelope_min = pchip(minlocs2,minpks2,1:1:p);
   
    % resultierende Dämpfung
   
    envelope = abs(envelope_max) - abs(envelope_min);
 


Danke nochmal Very Happy
Jojo
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 - 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.