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

График показывает, что большая часть энергии сигнала находится в более низких значениях последовательности, ниже приблизительно 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')

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