ich habe von einem signal die positiven peaks detektiert. nun möchte ich gerne in einer variablen jeden 4. peak zusammenfassen. bei mir sieht das dann so aus:
medfil_flow = medfilt1(Flow,10); %FLow ist das original-Signal, das noch ein paar Artefakte enthält
h=figure; % Subplot um zu vergleichen, ob der
ax1=subplot(2,1,1) plot(ax1,medfil_flow,'g-') title('Median-filtered-Flow')
ax2=subplot(2,1,2) plot(ax2,Flow,'b-') title('Flow-Kurve') linkaxes([ax1,ax2],'xy') ylim([-70100]);
[pks,locs] = findpeaks(medfil_flow); % um x- und y-Wert der Maxima zu erhalten
pks(pks<=0)=NaN; % blendet negative peaks aus
locs_4 = locs(1:4:end); % SOLLTE mir jeden 4. Wert liefern??????
pks_4 = pks(1:4:end);
figure_2=figure;
plot(Flow) hold on
plot(locs,pks,'R.', 'Markersize', 15) hold on
plot(locs_4,pks_4, 'g.', 'Markersize', 20) title('Maxima detektiert')
Hat jemand eine Idee, wieso das nicht funktioniert? Das Problem ist, dass nicht immer jeder 4 positive peak markiert wird, sondern mal der 3. mal der 6. mal der 4. usw. ...
Herzlichen Dank!
Gesplittet: 10.10.2017, 13:49 Uhr von Jan S Von Beitrag Nur jedes n-te Element eines Vektors verwenden... aus dem Forum Programmierung
Bitte hänge keine neuen Fragen an bestehende Thread an. Solches "Thread-hijacking" verwirrt die Leser, denn dann ist nicht mehr klar, zu welcher Frage eine Antwort gehört und der "Beantwortet"-Status wird sinnfrei.
Danke!
Vielleicht musst Du nur die negativen Peaks auch aus den locs entfernen:
mein eingangssignal kommt mit einer samplingrate von 50/sek. ich brauche einen zeitlichen verlauf des signals (in sek), weshalb ich einen Zeitvektor wie folgt erstellt habe:
die (dank eurer Hilfe) funktionierende peak-detection (jeden 4. peak) funktioniert, jedoch schaff ich es nicht, den Zeitvektor (Flow.Time) zu integrieren...
Code:
figure_2=figure;
plot(Flow) hold on
plot(locs,pks,'R.', 'Markersize', 15) hold on
plot(locs_4,pks_4, 'g.', 'Markersize', 20) title('Maxima detektiert')
h_figure=figure; % Subplot um zu vergleichen, ob der Medianfilter keine verfälschungen erzeugt
ax1=subplot(2,1,1);
plot(ax1,Flow.Time,medfil_flow,'g-') title('Median-filtered-Flow')
ax2=subplot(2,1,2);
plot(ax2,Flow.Time,Flow,'b-') title('Flow-Kurve')
Ein Problem, das Problem zu verstehen besteht darin, dass ich nicht genau weiss was Flow eigentlich ist. Sofern es einfach nur ein Vektor mit den Messdaten ist und noch kein Struct, würde ein
Ich hab immer den Zeitvektor als 1. Argument genommen...
Einstellungen und Berechtigungen
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.