Verfasst am: 02.03.2016, 17:29
Titel: Hüllkurve bei schlechtem Signal
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?
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;
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
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.