Main Content

fwht

Transformada de Walsh-Hadamard

Descripción

ejemplo

y = fwht(x) devuelve los coeficientes de la transformada de Walsh-Hadamard de la entrada x.

y = fwht(x,n) devuelve el punto n de la transformada de Walsh-Hadamard.

y = fwht(x,n,ordering) especifica el orden que debe utilizarse para los coeficientes devueltos de la transformada de Walsh-Hadamard.

Ejemplos

contraer todo

Este ejemplo muestra una señal de entrada simple y su transformada de Walsh-Hadamard.

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

     2     3     0     4     0     0    10     0

y contiene valores sin cero en las ubicaciones 0, 1, 3 y 6. Forme las funciones Walsh con los valores de secuencia 0, 1, 3 y 6 para recrear 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

Obtenga el mismo resultado extrayendo los valores sin cero y las funciones Walsh de forma programática.

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

Argumentos de entrada

contraer todo

Señal de entrada, especificada como matriz o vector. Si x es una matriz, la transformada Fast Walsh-Hadamard se calcula en cada columna de x. fwht funciona solo con señales que tienen una longitud igual a una potencia de 2. Si la longitud de x es menor que una potencia de 2, su longitud se completa con ceros hasta la siguiente potencia superior de dos antes de procesarse.

Puntos en la transformada de Walsh-Hadamard, especificados como un escalar entero positivo par. x y n deben tener la misma longitud. Si x es más largo que n, x se representa. Si x es más corto que n, x se completa con ceros.

Orden de los coeficientes de la transformada de Walsh Hadamard, especificados como 'sequency', 'hadamard' o 'dyadic'. Para especificar el orden, debe introducir un valor para la longitud n o, para utilizar el comportamiento predeterminado, especificar un vector vacío ([]) para n. Los valores válidos para el orden son los siguientes:

OrdenDescripción
'sequency'Coeficientes en orden ascendente de valor secuencial, donde cada fila tiene un cruce por cero adicional. Este es el orden establecido por defecto.
'hadamard'Coeficientes en orden normal de Hadamard.
'dyadic'Coeficientes en orden de código Gray, donde hay un cambio de bit entre un coeficiente y el siguiente.

Para obtener más información sobre las funciones Walsh y el orden, consulte Walsh-Hadamard Transform.

Argumentos de salida

contraer todo

Transformada de Walsh-Hadamard, devuelta como matriz o vector.

Algoritmos

El algoritmo de la transformada de Walsh-Hadamard es similar al algoritmo de Cooley-Tukey utilizado para FTT. Ambos utilizan una estructura de mariposa para determinar los coeficientes de transformación. Consulte las referencias para más detalles.

Referencias

[1] Beauchamp, Kenneth G. Applications of Walsh and Related Functions: With an Introduction to Sequency Theory. London: Academic Press, 1984.

[2] Beer, Tom. “Walsh Transforms.” American Journal of Physics. Vol. 49, 1981, pp. 466–472.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido en R2008b

Consulte también

| | | |