2016-06-10 10 views
0

Ich habe zwei. WAV-Dateien mit Aufnahmen von zwei verschiedenen Herzen, also mit unterschiedlichen Herzfrequenzen. Ich möchte beide Signale normalisieren, um ihre BPM bei 60 zu fixieren, ohne etwas anderes zu ändern.Herz BPM Normalisierung - Matlab

Dies ist, wie ein Signal (gleiche Sache für den anderen aber mit 2) gelesen wird und wie es aussieht (und es ist FFT):

[y1,fs1] = audioread(heartbeat1); 
    N1 = length(y1); 
    t1 = linspace(0, N1/fs1, N1); 

enter image description here ich einige der Forschung gemacht und interp1 gefunden, aber es scheint für mein Programm nicht angemessen. Ich habe wirklich keine Ahnung, wie ich das machen könnte. Wenn du also eine Funktion geben kannst, die ich benutzen könnte, könnte das großartig sein.

+2

Sie können ein ['fft'] (http://mathworks.com/help/matlab/ref/fft.html) verwenden, verwenden Sie [' findpeaks'] (http://mathworks.com/help/signal /ref/findpeaks.html) um den Heartbeat zu finden und dann ['resample'] (http://mathworks.com/help/signal/ref/resample.html) die Signale. Wenn Sie eine kleine Beispieldatei hochladen können, ist es für uns einfacher, eine vollständige Antwort zu schreiben. – hbaderts

+0

haben Sie versucht, eine dreidimensionale Frequenz zu verwenden? – shamalaia

+0

Ich glaube nicht, dass das FFt mir erlaubt, den Herzschlag zu finden. Was ist eine dreidimensionale Frequenz? – Kenwa

Antwort

1

Ich bin mir nicht sicher, ob ich verstanden habe.

Ich denke, dass Sie zwei Herzschlagsignale mit verschiedenen "Haupt" Herzschlagfrequenzen vergleichen möchten. Deshalb denke ich, Sie die beiden Signale als Funktion der

plotten kann f/f_ {Beat}

wo f_ {schlagen} ist die Herzschlagfrequenz eines Signals. Dies wird eine dimensionale (es hat keine Einheiten, weil 1/s/1/s = 1) Frequenz und sollte Ihnen erlauben, Signale mit verschiedenen Herzfrequenzen zu vergleichen, weil es nicht verzerrt.

Dies ist mehr oder weniger die Wirkung dessen, was ich vorschlage. Beachten Sie, dass ich nicht weiß, um die Herzschlagfrequenz zu berechnen, und ich habe gerade f_ {Beat} = 0,8 1/s verwendet. Wahrscheinlich können Sie das verbessern.

Signal als Funktion der Frequenz:

enter image description here

Signal als Funktion der dimensionslosen Frequenz:

enter image description here

Hoffnung das irgendwie hilft.

+0

Wie @Finn sagte ich möchte die Kurve in der Zeitachse so strecken, dass der Heartbeat zu 60BPM für beide Signale geht, und ich sehe nicht, wie 'f/f_ {beat} 'könnte helfen – Kenwa

+0

weil, wenn Sie f_beat = 60BPM dann wissen Sie, dass es auf 1 geht, für jedes Signal.Ich glaube nicht, dass streating Signale ist ein guter Weg, um sie zu vergleichen – shamalaia

+0

Ich möchte sie nicht vergleichen, will ich sie haben den gleichen BP M auf beiden Signalen.Sagen wir zum Beispiel, der erste hat 79BPM und der zweite 94BPM, ich möchte das gleiche Signal aber mit 60BPM behalten. Ich weiß nicht, ob es klar ist. – Kenwa