Verfasst am: 01.09.2010, 16:03
Titel: Relative Maxima/Minima bzw. Amplitude
Guten Tag,
Ich mache gerade ein Praktikum in einem Institut und soll mit Matlab eine große Anzahl von Messreihen auswerten(Matlabneuling).Mit 2 Büchern für Anfänger,unzähligen Skripts und interner Hilfe habe ich bereits folgendes erreicht.
-Das Einlesen und in Matrix abspeichern.Klappt!
-Rauschen minimieren und den Verlauf glätten.Klappt!
jetzt soll ich aber die Messreihen(Sinunähnlicher Verlauf) auf relative Minima und Maxima untersuchen und zwischen diesen die Steigung/Amblitude bilden.
wenn jemand irgendeine Art von Hilfe hat wäre ich sehr dankbar, ich bin Heute nach 8 stündigem überlegen und ausprobieren kein schritt vorran gekommen.
ich verstehe unter relative Minima und Maxima ,Extrema in einem bestimmten Bereich in einer Testreihe oder meinst du die Extrema pro Testreihe?
Grüße
LeBaer
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 02.09.2010, 09:35
Titel:
Hallo,
Also wenn man die messreihe aufträgt und die punkte verbindet dann hat ähnelt es einem sinusförmingen verlauf mit vielen extremstellen die ich bestimmen möchte. wisst ihr vllt wie ich das machen kann?
solche Themen gab es hier auch schon. Wenn du x- und y-Werte hast, kannst du die Vorzeichenwechsel der genäherten Ableitungen und die zugehörigen x- und y-Werte so bestimmen :
der meine sehr stark verrauschten Messdaten glättet. Leider befinden sich immernoch zu viele Peaks so dass ich über 80 maxima/minima bekomme und das bei einer von insg. 33 Messreihen.
Kann mir vllt jemand einen weiteren filter empfehlen?
gruß
Edit by denny: Bitte die Code-Formatierung verwenden. Danke!
was sind das für Störungen? Wenn du eine FFT mit den Daten machst die einen sinusförmigen Verlauf haben, wirst du einen Peak erhalten um einer bestimmten Frequenz. Drum herum hast du Signalmüll, denn du ausschalten kannst, indem du ihn einfach 0 setzt und wieder inverse transfromierst. Was auch gehen könnte ist, wenn du eine Autokorrelation durchführst und danach die von Harald angewandten Vorschläge durchführst. Hierfür könnte die Funktion xcorr behilflich sein, das wird wahrscheinlich die beste Lösung sein. Der Filter scheint mir ein Mittelwertfilter zu sein. Der hat den selben Zweck, nur dämpft er dein Hauptsignal ebenfalls, da er wie ein Tiefpass wirkt.
Schöne Grüße
LeBaer
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 02.09.2010, 15:47
Titel:
Nach googlen,Fragen,Rumexperementieren..etc. komme ich zu folgendem Ergebnis:
for i=32:-1:1
xm = Matlab([100:500],i)';
p = polyfit(x, xm,1);
figure
y=p(1)*x+p(2);
g=(xm-y);
iN =50; % Länge des Filters
vg = filter(ones(1,iN)/iN, 1, g);
% Savitzky-Golay Filter, eignet sich am besten um Rauschen zu % unterdrücken und den Verlauf zu glätten
smtlb = sgolayfilt(vg,3,41);
plot(100:500,smtlb,'r');
grid; %gitter einfügen
% MINIMA und MAXIMA rausfinden und abspeichern
vzw = diff(sign(diff(smtlb)));
local = x(vzw < 0);
relMaxX(i,1:length(local)) = local;
local =smtlb(vzw < 0);
relMaxY(i,1:length(local)) = local;
local = x(vzw > 0);
relMinX(i,1:length(local)) = local;
local = smtlb(vzw > 0);
relMinY(i,1:length(local)) = local;
title(num2str(i));
Edit by denny: Bitte die Code-Formatierung verwenden. Danke!
LeBaer
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 03.09.2010, 13:03
Titel:
Guten Tag,
ich bin schon relativ weit mit meinem Projekt!
jetzt kommt das große aber:
aber der Zielgeraden wartet noch die größte Hürde vor mir. Ich muss aus den gewonnen rel. mins und maxs die steigung berechnen.
for i=1:1:33
xm = Matlab([200:400],i)';
p = polyfit(x, xm,1);
figure % plot(x,xm) % hold on
y=p(1)*x+p(2);
% plot(x,y);
g=(xm-y);
iN =50; % Länge des Filters
vg = filter(ones(1,iN)/iN, 1, g);
% Savitzky-Golay Filter, eignet sich am besten um Rauschen zu % unterdrücken und den Verlauf zu glätten
nach einer Stunde googeln würde ich anfangen, selber zu überlegen
Ich gehe von meinem Code aus, und du kannst das dann sicher übertragen.
Statt lokale Minima und Maxima zu trennen, wäre mein Vorschlag, beide in eine Matrix zu stecken - die müssen naturgemäß ja abwechselnd kommen, das müsste also so passen.
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.