ifwht

Обратное Быстрое Преобразование Уолша-Адамара

Синтаксис

y = ifwht(x)
y = ifwht(x,n)
y = ifwht(x,n,ordering)

Описание

y = ifwht(x) возвращает коэффициенты обратного дискретного быстрого Преобразования Уолша-Адамара входа x. Если x матрица, обратное быстрое Преобразование Уолша-Адамара вычисляется на каждый столбец x. Обратное быстрое Преобразование Уолша-Адамара работает только с сигналами с длиной, равной степени 2. Если длина x меньше степени 2, ее длина дополнена нулями к следующей большей степени двойки перед обработкой.

y = ifwht(x,n) возвращает n- укажите обратное дискретное Преобразование Уолша-Адамара, где n должна быть степень 2.

y = ifwht(x,n,ordering) задает упорядоченное расположение, чтобы использовать для возвращенных обратных коэффициентов Преобразования Уолша-Адамара. Чтобы задать упорядоченное расположение, необходимо ввести значение для длины n или, чтобы использовать поведение по умолчанию, задайте пустой вектор ([]) для n. Допустимые значения для упорядоченного расположения следующие:

Упорядоченное расположениеОписание
'sequency'Коэффициенты в порядке возрастания sequency значение, где каждая строка имеет дополнительное нулевое пересечение. Это - упорядоченное расположение по умолчанию.
'hadamard'Коэффициенты в нормальном порядке Адамара.
'dyadic'Коэффициенты в порядке Кода Грея, где одно битное изменение происходит от одного коэффициента до следующего.

Примеры

свернуть все

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

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

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

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

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

Алгоритмы

Обратный быстрый алгоритм Преобразования Уолша-Адамара похож на алгоритм Cooley-Tukey, используемый для обратного БПФ. Оба используют структуру бабочки, чтобы определить коэффициенты преобразования. Смотрите ссылки для деталей.

Ссылки

[1] Beauchamp, Кеннет Г. Приложения Уолша и связанных функций: с введением в теорию Sequency. Лондон: Academic Press, 1984.

[2] Бир, Том. “Преобразования Уолша”. Американский Журнал Физики. Издание 49, 1981, стр 466–472.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

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

| | | |

Представленный в R2008b