Используйте электрокардиограмму (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.