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

Используйте электрокардиограмму (ECG) сигнал проиллюстрировать работу с Преобразованием Уолша-Адамара. Сигналы 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')

График показывает, что большая часть энергии сигнала находится в ниже sequency значения ниже приблизительно 1 100. Сохраните только первые 1 024 коэффициента (из 4 096). Попытайтесь восстановить сигнал точно только от этих сохраненных коэффициентов.

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')

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

Смотрите также

|