exponenta event banner

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] Бошам, Кеннет Г. Применение Уолша и связанных с ним функций: с введением в теорию последовательности. Лондон: Академическая пресса, 1984.

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

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

См. также

| | | |

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