fwht

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

Описание

пример

y = fwht(x) возвращает коэффициенты дискретного преобразования Уолша-Адамара входного x.

y = fwht(x,n) возвращает n-точное дискретное преобразование Уолша-Адамара.

y = fwht(x,n,ordering) задает упорядоченное расположение использования возвращенных коэффициентов преобразования Уолша-Адамара.

Примеры

свернуть все

Этот пример показывает простой входной сигнал и его преобразование Уолша-Адамара.

x = [19 -1 11 -9 -7 13 -15 5];
y = fwht(x)
y = 1×8

     2     3     0     4     0     0    10     0

y содержит ненулевые значения в местоположениях 0, 1, 3 и 6. Сформируйте функции Уолша со значениями последовательности 0, 1, 3 и 6, чтобы воссоздать x.

w0 = [1 1 1 1 1 1 1 1];
w1 = [1 1 1 1 -1 -1 -1 -1];
w3 = [1 1 -1 -1 1 1 -1 -1];
w6 = [1 -1 1 -1 -1 1 -1 1];
w = y(0+1)*w0 + y(1+1)*w1 + y(3+1)*w3 + y(6+1)*w6
w = 1×8

    19    -1    11    -9    -7    13   -15     5

Получите тот же результат путем извлечения ненулевых значений и функций Уолша программно.

ww = fwht(eye(length(y)))*length(y)
ww = 8×8

     1     1     1     1     1     1     1     1
     1     1     1     1    -1    -1    -1    -1
     1     1    -1    -1    -1    -1     1     1
     1     1    -1    -1     1     1    -1    -1
     1    -1    -1     1     1    -1    -1     1
     1    -1    -1     1    -1     1     1    -1
     1    -1     1    -1    -1     1    -1     1
     1    -1     1    -1     1    -1     1    -1

nz = find(y);
w = sum(y(nz)'.*ww(nz,:))
w = 1×8

    19    -1    11    -9    -7    13   -15     5

Входные параметры

свернуть все

Входной сигнал, заданный как матрица или вектор. Если x является матрицей, Быстрое преобразование Уолша-Адамара вычисляется на каждом столбце x. fwht работает только с сигналами с длиной, равной степени 2. Если длина x меньше степени 2, ее длина заполнена нулями до следующей большей степени двойки перед обработкой.

Точки в дискретном преобразовании Уолша Адамара, заданные как положительный четный целочисленный скаляр x. и n должна быть одинаковой длины. Если x длиннее n, x усечен. Если x короче n, x заполнен нулями.

Порядок коэффициентов преобразования Уолша Адамара, заданный как 'sequency', 'hadamard' или 'dyadic'. Чтобы задать упорядоченное расположение, необходимо ввести значение длины n или, чтобы использовать поведение по умолчанию, задайте пустой вектор ([]) для n. Допустимые значения для упорядоченного расположения:

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

Для получения дополнительной информации о функциях Уолша и упорядоченном расположении, см. Преобразование Уолша-Адамара.

Выходные аргументы

свернуть все

Дискретное преобразование Уолша-Адамара, возвращаемое как матрица или вектор.

Алгоритмы

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

Ссылки

[1] Beauchamp, Kenneth G. Applications of Walsh and Related Functions: With a Introduction to Sequency Theory. Лондон: Академическая пресса, 1984.

[2] Бир, Том. «Преобразования Уолша». Американский физический журнал. Том 49, 1981, с. 466-472.

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

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

.

См. также

| | | |

Введенный в R2008b