Преобразование Уолша-Адамара для спектрального анализа и сжатия сигналов ЭКГ

Используйте сигнал электрокардиограммы (ECG), чтобы проиллюстрировать работу с преобразованием Уолша-Адамара. Сигналы ЭКГ обычно являются очень большими и должны храниться для анализа и поиска в будущем. Преобразования Уолша-Адамара особенно хорошо подходят для этого приложения, потому что они обеспечивают сжатие и, таким образом, требуют меньшего пространства для хранения. Они также обеспечивают быструю реконструкцию сигнала.

Начните с сигнала ECG. Реплицируйте его, чтобы создать более длинный сигнал и вставить дополнительный случайный шум.

xe = ecg(512);
xr = repmat(xe,1,8);
x = xr + 0.1.*randn(1,length(xr));

Преобразуйте сигнал с помощью быстрого преобразования Уолша-Адамара. Постройте график исходного сигнала и преобразованного сигнала.

y = fwht(x);

subplot(2,1,1)
plot(x)
xlabel('Sample index')
ylabel('Amplitude')
title('ECG Signal')

subplot(2,1,2)
plot(abs(y))
xlabel('Sequency index')
ylabel('Magnitude')
title('WHT Coefficients')

Figure contains 2 axes. Axes 1 with title ECG Signal contains an object of type line. Axes 2 with title WHT Coefficients contains an object of type line.

График показывает, что большая часть энергии сигнала находится в более низких значениях последовательности, ниже приблизительно 1100. Сохраните только первые 1024 коэффициента (из 4096). Попытайтесь точно восстановить сигнал только из этих сохраненных коэффициентов.

y(1025:length(x)) = 0;
xHat = ifwht(y);

figure
plot(x)
hold on
plot(xHat)
xlabel('Sample Index')
ylabel('ECG Signal Amplitude')
legend('Original','Reconstructed')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original, Reconstructed.

Воспроизведенный сигнал очень близок к исходному, но был сжат до четверти размера. Хранение большего количества коэффициентов является компромиссом между увеличенным разрешением и увеличенным шумом, в то время как хранение меньшего количества коэффициентов может вызвать потерю peaks.

См. также

|