Haar 小波变换的矩阵构造挺巧的,用的就是那种分而治之的思路。你只要搞清楚从H_1 = [1]怎么一步步递推,剩下的都挺顺的。这里用到了克罗内克积,其实就是一种矩阵的“放大镜”,两个小矩阵拼成一个大矩阵。再加上1/sqrt(2)的归一化,不仅让结果漂亮,还能保证正交性,挺贴心的。

要用这个 H 矩阵干嘛?像是做图像压缩信号去噪啥的,挺方便的。你只要拿一个长度为 2 的幂的向量,直接乘上这个矩阵就行,响应也快,代码也简单。像下面这样:

H = haarMatrix(8);
x = rand(8,1);
y = H * x;

H 是你生成的变换矩阵,x是原始信号,y就是小波系数了。要恢复也简单,直接转置回来:

x_recon = H' * y;

相关资料我也翻了一些,克罗内克积怎么加速、单位矩阵怎么构造,甚至还有归一化算法实现,通通都有链接,不怕你看不懂,就怕你不点。

如果你平时用 Matlab 多,或者正好想找个思路清晰的小波变换代码,嗯,这资源还蛮值得一试的。