Walsh-Hadamard 变换
Walsh-Hadamard 变换是一种将信号分解成一组基函数的非正弦类正交变换方法。这些基函数是 Walsh 函数,它们是值为 +1 或 –1 的矩形波或方波。Walsh-Hadamard 变换也称为 Hadamard 变换(请参阅 MATLAB 软件中的 hadamard
函数)、Walsh 变换或 Walsh-Fourier 变换。
前八个 Walsh 函数具有以下值:
索引 | Walsh 函数值 |
---|---|
0 | 1 1 1 1 1 1 1 1 |
1 | 1 1 1 1 -1 -1 -1 -1 |
2 | 1 1 -1 -1 -1 -1 1 1 |
3 | 1 1 -1 -1 1 1 -1 -1 |
4 | 1 -1 -1 1 1 -1 -1 1 |
5 | 1 -1 -1 1 -1 1 1 -1 |
6 | 1 -1 1 -1 -1 1 -1 1 |
7 | 1 -1 1 -1 1 -1 1 -1 |
Walsh-Hadamard 变换返回列率值。列率是一种更广义的频率,定义为每单位时间间隔平均过零次数的一半。每个 Walsh 函数都有唯一的列率值。您可以使用返回的列率值来估计原始信号中的信号频率。
用来存储 Walsh 函数的排序方案有三种:列率法,Hadamard 法和并元法。列率排序用于信号处理应用,其中 Walsh 函数的顺序如上表所示。Hadamard 排序用于控制应用,函数顺序为 0、4、6、2、3、7、5、1。并元或格雷码排序用于数学,函数顺序为 0、1、3、2、6、7、5、4。
Walsh-Hadamard 变换用于许多应用,如图像处理、语音处理、滤波和功率谱分析。它对于降低带宽存储要求和扩频分析非常有用。像 FFT 一样,Walsh-Hadamard 变换有快速版本,即快速 Walsh-Hadamard 变换 (fwht
)。与 FFT 相比,FWHT 所需的存储空间更少,并且计算速度更快,因为它只使用实数加法和减法,而 FFT 需要复数值。与 FFT 相比,FWHT 能够用更少的系数更精确地表示具有明显不连续性的信号。FWHT 和逆 FWHT (ifwht
) 是对称的,因此使用相同的计算过程。长度为 N 的信号 x(t) 的 FWHT 和 IFWHT 定义为:
,其中 i = 0,1, …, N – 1 和 WAL(n,i) 是 Walsh 函数。与 FFT 的 Cooley-Tukey 算法相似,这 N 个元素被分解成元素个数为 N/2 的两组,然后用蝶形结构合并以形成 FWHT。对于图像(其输入通常是二维信号),其 FWHT 系数的计算方法是先横向计算行,再纵向计算列。
对于以下简单信号,得到的 FWHT 表明 x
是使用列率值为 0、1、3 和 6 的 Walsh 函数创建的,这些值是变换后的 x
的非零索引。使用逆 FWHT 可重新创建原始信号。
x = [4 2 2 0 0 2 -2 0] y = fwht(x)
x = 4 2 2 0 0 2 -2 0 y = 1 1 0 1 0 0 1 0
x1 = ifwht(y)
x1 = 4 2 2 0 0 2 -2 0