2016-04-29 4 views
1

Ich habe einen Datensatz, der Zeit- und Beschleunigungswerte enthält. Ich möchte Bereiche der Beschleunigung und Verzögerung identifizieren und dann die Spitzenwerte für Beschleunigung/Verzögerung und die zugehörige Zeit für jede Region zurückgeben. Ich habe bisher die "Findpeaks" -Funktion verwendet, um die Spitzen in den Daten zu finden, aber sie enthalten sowohl Beschleunigungs- als auch Verzögerungsspitzen. Jede mögliche Hilfe würdeFinde Peaks im Datensatz für 2 verschiedene Ereignisse

[~,~,Data] = xlsread('data.xlsx'); 
ts = cell2mat(Data(2:end,1))/1000; %% time in seconds 
av = cell2mat(Data(2:end,2)); %% acceleration values in m/s 
figure 
plot(ts,av) 
findpeaks(av,ts) 
[PKS,LOCS] = findpeaks(av,ts) 
+0

Wie sieht Ihr Datensatz aus? Kannst du uns zeigen, was du bisher versucht hast? – Johannes

+0

Der Datensatz besteht aus Zeit- und Beschleunigungs-/Verzögerungswerten – DashD

Antwort

0

zu schätzen, wenn Sie Ihre Daten für Werte Beschleunigung, so dass der findpeaks Funktion nur die Spitzenbeschleunigungswerte zurück. Wenn Sie auch die Spitzen der Verzögerung wollen, multiplizieren Sie Ihren Vektor mit -1 und rufen Sie erneut die Funktion findpeaks auf.

BTW Wenn Sie nur Bereiche der Beschleunigung und Verzögerung benötigen, wäre dies ein beliebiger Wert, der nicht Null ist.

Beispiel: für die beschleunigte vector:

x = [1 2 5 7 7 8 3 1 2 2 2 -2 -4 -7 -3 -1 0 5]; 

es Stück wäre: enter image description here

und die findpeaks Funktion gibt den Wert 8 (die der 6'th Index ist). Wenn Sie die gleiche Funktion mit dem Vektor multipliziert mit -1 ausführen, erhalten Sie den Wert -1 (was der 8. Index ist). Und wieder eine gute Visualisierung dass: enter image description here

Wenn Ihre Daten negative Werte enthalten, können Sie das Paar verwenden: (MinPeakHeight, 0) in Ihrer findpeaks Funktion als:

findpeaks(x, 'MinPeakHeight', 0); 

für die Beschleunigung Problem , damit Sie keine negative Beschleunigung bekommen. Dies hängt jedoch von Ihren spezifischen Problemdetails ab.

bearbeiten: Wie Sie sehen können, fügte ich dem Vektor einige negative Werte für eine vollständige Antwort auf Ihr Problem. In der ursprünglichen Grafik wären die Beschleunigungsspitzen die Indizes: (6, 9) für positiv und (14) für negativ. Die Verzögerung wäre: (8).

So wird nun jede Beschleunigung ein beliebiger positiver Wert sein, den die Findpeaks auf dem ursprünglichen Vektor zurückgeben; und alle positiven Werte, die die Funktion an dem umgedrehten (multipliziert mit -1) Vektor zurückgibt. Wie bei der Verzögerung wird es das genaue Gegenteil sein: negative Werte vom ursprünglichen Vektor und negative Werte vom umgedrehten Vektor.

Hoffe es ist jetzt klar.

+0

Sie haben Recht. Ich setze das, was ich bisher gemacht habe, in den ursprünglichen Post. Die Daten enthalten auch negative Werte, so dass es sich mehr oder weniger um einen verrauschten Datensatz handelt. Ich verstehe, was du gesagt hast, meinst du das zu sagen findpeaks (x, 'MinPeakHeight', 0); gibt sowohl Beschleunigungs- als auch Verzögerungswerte? – DashD

+0

Nein. Wenn Sie diese Werte zur Funktion hinzufügen, bedeutet dies, dass Sie einen Schwellenwert festlegen. Dies bedeutet, dass Sie Spitzenwerte erhalten, die nur größer als der von Ihnen festgelegte Wert sind. Aber in Ihrem Fall bedeutet dies, dass in Ihren abgerufenen Daten (Spitzen) keine negative Beschleunigung enthalten ist. Dies ist für die positive Beschleunigung. Für die negativen Werte - Verzögerung, kommt es darauf an, was Sie wollen.Wenn Sie die negativen Werte wünschen, können Sie tun, was ich vorgeschlagen habe (multiplizieren mit -1) und nur die positiven Spitzenwerte erhalten (verwenden Sie wieder findpeaks mit den zusätzlichen Variablen von [MinPeakHeight, 0]) – lazary

+0

Ja, ich verstehe. Ich habe den von Ihnen vorgeschlagenen Parameter verwendet, bevor Sie die Frage hier posten, aber ich bin mir nicht sicher, auf welcher Grundlage ich den Schwellenwert für – DashD

Verwandte Themen