Используйте процедуру FFT в Matlab, чтобы найти BPM по данной ЭКГ - PullRequest
0 голосов
/ 23 мая 2019

Из задания:

Используйте процедуру fft из MATLAB, чтобы узнать количество ударов в минуту (BPM) в файле myecg.csv.Период дискретизации для этого сигнала составляет 0,00192 секунды, и сигнал был записан с ослаблением 10 на цифровом прицеле (что нужно сделать, чтобы наложить сигнал с правильной амплитудой)?

Итакв основном я должен был бы получить BPM.Я могу успешно прочитать соответствующую ЭКГ и получить спектр преобразования Фурье, а также односторонний амплитудный спектр y(t), но я не уверен, как связать информацию, чтобы получить BPM.

Вот изображение сигнала:

enter image description here

Это мой код:

enter image description here

1 Ответ

0 голосов
/ 23 мая 2019

Есть много способов получить BPM, в зависимости от ваших знаний DSP.Сначала умножьте сигнал на 10, чтобы получить «правильную амплитуду» в ответ на вопрос:

y_norm = y*10;
  1. Временная область : Вы можете рассчитать время между пиками:

    mean_diff_peaks = mean( diff(find(y_norm>0.5)) );
    
    bps = 1/(mean_diff_peaks *  0.00192);
    
    bpm = bps * 60
    

    (эта опция менее рекомендуется, так как вам нужно немного манипулировать сэмплами вокруг пиков ...)

  2. Частотная область : Вы можете использовать fft (), как и раньше, найти индекс пика и перевести на частоту [Гц] (аналогично приведенному выше примеру)

  3. Оценка спектра : используйте pwelch () в качестве оценки спектра для получения более точных результатов.

Goodluck!

...