В этом примере показано, как использовать вейвлеты для анализа сигналов электрокардиограммы (ЭКГ). Сигналы ЭКГ часто являются нестационарными, что означает, что их частотное содержание изменяется с течением времени. Эти изменения представляют интерес.
Вейвлеты разлагают сигналы на изменяющиеся во времени частотные (масштабные) составляющие. Поскольку элементы сигнала часто локализуются во времени и частоте, анализ и оценка упрощаются при работе с более разреженными (уменьшенными) представлениями.
Комплекс QRS состоит из трех отклонений в форме сигнала ЭКГ. Комплекс QRS отражает деполяризацию правого и левого желудочков и является наиболее заметной особенностью ЭКГ человека.
Нагрузка и график формы сигнала ЭКГ, где пики R комплекса QRS были аннотированы двумя или более кардиологами. Данные ЭКГ и аннотации взяты из базы данных аритмии MIT-BIH. Данные дискретизируются на частоте 360 Гц.
load mit200 figure plot(tm,ecgsig) hold on plot(tm(ann),ecgsig(ann),'ro') xlabel('Seconds') ylabel('Amplitude') title('Subject - MIT-BIH 200')

Можно использовать вейвлеты для построения автоматического QRS-детектора для использования в таких приложениях, как оценка интервала R-R.
Существует две клавиши для использования вейвлетов в качестве детекторов общих признаков:
Вейвлет-преобразование разделяет компоненты сигнала на различные полосы частот, обеспечивая возможность более разреженного представления сигнала.
Вы часто можете найти вейвлет, который напоминает функцию, которую вы пытаетесь обнаружить.
Вейвлет «sym4» напоминает комплекс QRS, что делает его хорошим выбором для обнаружения QRS. Чтобы проиллюстрировать это более четко, извлеките комплекс QRS и постройте график результата с расширенным и переведенным вейвлетом «sym4» для сравнения.
qrsEx = ecgsig(4560:4810); [mpdict,~,~,longs] = wmpdictionary(numel(qrsEx),'lstcpt',{{'sym4',3}}); figure plot(qrsEx) hold on plot(2*circshift(mpdict(:,11),[-2 0]),'r') axis tight legend('QRS Complex','Sym4 Wavelet') title('Comparison of Sym4 Wavelet and QRS Complex')

Используйте максимальное перекрывающееся дискретное вейвлет-преобразование (MODWT) для увеличения пиков R в форме сигнала ЭКГ. MODWT является недекимированным вейвлет-преобразованием, которое обрабатывает произвольные размеры выборки.
Во-первых, разложить сигнал ЭКГ до уровня 5, используя вейвлет «sym4» по умолчанию. Затем реконструируют локализованную по частоте версию формы сигнала ЭКГ, используя только вейвлет-коэффициенты на шкалах 4 и 5. Шкалы соответствуют следующим приблизительным полосам частот.
Шкала 4 - [11.25, 22.5) Гц
Шкала 5 - [5,625, 11,25) Гц.
Это охватывает полосу пропускания, показанную для максимизации энергии QRS.
wt = modwt(ecgsig,5);
wtrec = zeros(size(wt));
wtrec(4:5,:) = wt(4:5,:);
y = imodwt(wtrec,'sym4');Использовать возведенные в квадрат абсолютные значения аппроксимации сигнала, построенной из вейвлет-коэффициентов, и использовать алгоритм поиска пиков для идентификации R пиков.
При наличии Toolbox™ обработки сигналов можно использовать findpeaks для определения местоположения пиков. Постройте график сигнала R-пика, полученного с помощью вейвлет-преобразования, аннотированного автоматически обнаруженными местоположениями пиков.
y = abs(y).^2; [qrspeaks,locs] = findpeaks(y,tm,'MinPeakHeight',0.35,... 'MinPeakDistance',0.150); figure plot(tm,y) hold on plot(locs,qrspeaks,'ro') xlabel('Seconds') title('R Peaks Localized by Wavelet Transform with Automatic Annotations')

Добавьте аннотации экспертов в форму сигнала R-пика. Время автоматического обнаружения пика считается точным, если оно находится в пределах 150 мс от истинного пика (75 мс ).
plot(tm(ann),y(ann),'k*') title('R peaks Localized by Wavelet Transform with Expert Annotations')

В командной строке можно сравнить значения tm(ann) и locs, которые являются временем эксперта и временем автоматического пикового обнаружения соответственно. Увеличение пиков R с помощью вейвлет-преобразования приводит к скорости попадания 100% и отсутствию ложных срабатываний. Вычисленная частота сердечных сокращений с использованием вейвлет-преобразования составляет 88,60 ударов в минуту по сравнению с 88,72 ударов в минуту для аннотированной формы сигнала.
При попытке работы над квадратными величинами исходных данных обнаруживается способность вейвлет-преобразования изолировать R-пики значительно облегчает задачу обнаружения. Работа с необработанными данными может вызвать неправильную идентификацию, например, когда квадрат пика S-волны превышает пик R-волны около 10,4 секунды.
figure plot(tm,ecgsig,'k--') hold on plot(tm,y,'r','linewidth',1.5) plot(tm,abs(ecgsig).^2,'b') plot(tm(ann),ecgsig(ann),'ro','markerfacecolor',[1 0 0]) set(gca,'xlim',[10.2 12]) legend('Raw Data','Wavelet Reconstruction','Raw Data Squared', ... 'Location','SouthEast'); xlabel('Seconds')

Используя findpeaks по квадратам необработанных данных получается двенадцать ложных срабатываний.
[qrspeaks,locs] = findpeaks(ecgsig.^2,tm,'MinPeakHeight',0.35,... 'MinPeakDistance',0.150);
Помимо переключателей в полярности пиков R, ЭКГ часто искажается шумом.
load mit203 figure plot(tm,ecgsig) hold on plot(tm(ann),ecgsig(ann),'ro') xlabel('Seconds') ylabel('Amplitude') title('Subject - MIT-BIH 203 with Expert Annotations')

Используйте MODWT для выделения пиков R. Использовать findpeaks для определения местоположения пиков. Постройте график R-пиковой формы сигнала вместе с экспертными и автоматическими аннотациями.
wt = modwt(ecgsig,5); wtrec = zeros(size(wt)); wtrec(4:5,:) = wt(4:5,:); y = imodwt(wtrec,'sym4'); y = abs(y).^2; [qrspeaks,locs] = findpeaks(y,tm,'MinPeakHeight',0.1,... 'MinPeakDistance',0.150); figure plot(tm,y) title('R-Waves Localized by Wavelet Transform') hold on hwav = plot(locs,qrspeaks,'ro'); hexp = plot(tm(ann),y(ann),'k*'); xlabel('Seconds') legend([hwav hexp],'Automatic','Expert','Location','NorthEast');

Частота попаданий снова составляет 100% при нулевых ложных тревогах.
В предыдущих примерах использовался очень простой вейвлет QRS-детектор, основанный на приближении сигнала, построенном из modwt. Цель состояла в том, чтобы продемонстрировать способность вейвлет-преобразования изолировать компоненты сигнала, а не создавать наиболее надежный QRS-детектор на основе вейвлет-преобразования. Можно, например, использовать тот факт, что вейвлет-преобразование обеспечивает многомасштабный анализ сигнала для улучшения обнаружения пиков.
Ссылки
Гольдбергер А. Л., Л. А. Н. Амарал, Л. Гласс, Ж. М. Хаусдорф, П. Ч. Иванов, Р. Г. Марк, Ж. Э. Миетус, Г. Б. Муди, С-К Пенг, Х. Э. Стэнли. «PhysioBank, PhysioToolkit и PhysioNet: компоненты нового исследовательского ресурса для сложных физиологических сигналов». Циркуляция 101. Vol.23, e215-e220, 2000. http://circ.ahajournals.org/cgi/content/full/101/23/e215
Муди, Г. Б. «Оценка анализаторов ЭКГ». http://www.physionet.org/physiotools/wfdb/doc/wag-src/eval0.tex
Муди Г. Б., Р. Г. Марк. «Влияние базы данных аритмии MIT-BIH». IEEE Eng in Med and Biol. vol. 20, Number 3, 2001), стр. 45-50.