Main Content

ifwht

Inverso Rápido Walsh-Hadamard transformar

Sintaxis

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

Descripción

y = ifwht(x) devuelve los coeficientes de la transformación inversa discreta rápida Walsh-Hadamard de la entrada.x Si es una matriz, la transformación inversa rápida Walsh-Hadamard se calcula en cada columna de .xx La transformación inversa rápida Walsh-Hadamard opera sólo en señales con una longitud igual a una potencia de 2. Si la longitud de es menor que una potencia de 2, su longitud se rellena con ceros a la siguiente mayor potencia de dos antes del procesamiento.x

y = ifwht(x,n) devuelve la transformación Walsh-Hadamard discreta inversa de puntos, donde debe ser una potencia de 2.nn

y = ifwht(x,n,ordering) especifica el orden que se utilizará para los coeficientes de transformación inversa de Walsh-Hadamard devueltos. Para especificar el orden, debe especificar un valor para la longitud o, para utilizar el comportamiento predeterminado, especifique un vector vacío ( ) para .n[]n Los valores válidos para el pedido son los siguientes:

OrdenarDescripción
'sequency'Coeficientes en orden de valor de secuencia ascendente, donde cada fila tiene un cruce cero adicional. Este es el orden predeterminado.
'hadamard'Coeficientes en orden Hadamard normal.
'dyadic'Coeficientes en orden de código gris, donde se produce un cambio de un solo bit de un coeficiente al siguiente.

Ejemplos

contraer todo

Utilice una señal de electrocardiograma (ECG) para ilustrar el trabajo con la transformación Walsh-Hadamard. Las señales de ECG suelen ser muy grandes y deben almacenarse para su análisis y recuperación en un momento futuro. Las transformaciones Walsh-Hadamard son particularmente adecuadas para esta aplicación porque proporcionan compresión y, por lo tanto, requieren menos espacio de almacenamiento. También proporcionan una reconstrucción rápida de la señal.

Comience con una señal ECG. Replicarlo para crear una señal más larga e insertar algún ruido aleatorio adicional.

xe = ecg(512); xr = repmat(xe,1,8); x = xr + 0.1.*randn(1,length(xr));

Transforma la señal usando la rápida transformación Walsh-Hadamard. Trazar la señal original y la señal transformada.

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')

La gráfica muestra que la mayor parte de la energía de la señal está en los valores de secuencia ción inferiores, por debajo de aproximadamente 1100. Almacene sólo los primeros 1024 coeficientes (de 4096). Trate de reconstruir la señal con precisión a partir de sólo estos coeficientes almacenados.

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')

La señal reproducida está muy cerca del original, pero se ha comprimido a un cuarto del tamaño. Almacenar más coeficientes es un equilibrio entre el aumento de la resolución y el aumento del ruido, mientras que el almacenamiento de menos coeficientes puede causar la pérdida de picos.

Algoritmos

El algoritmo de transformación inversa rápida Walsh-Hadamard es similar al algoritmo Cooley-Tukey utilizado para el FFT inverso. Ambos utilizan una estructura de mariposa para determinar los coeficientes de transformación. Consulte las referencias para obtener más información.

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.

Consulte también

| | | |

Introducido en R2008b