Processing math: 100%

Fast Walsh-Hadamard Transform

这玩意最近经常出现额……

FFT解决的问题是Ck=i+j=kAiBj

其中ABC是三个列向量。

而FWHT是将下面的+号换成位运算符时采用的方法。

做法与FFT相似,先将类似的系数表达式转换为点值表达式,点积之后再转换回来。

将系数表达式转换为点值表达式的函数叫tf,反向的叫utf

A0表示A的前半部分(二进制位最高位为0),A1表示A的后半部分(二进制位最高位为1),转换方法为:

tfxor(A)=(tfxor(A0+A1),tfxor(A0A1))utfxor(A)=(utfxor(A0+A12),utfxor(A0A12))

 

tfand(A)=(tfand(A0+A1),tfand(A1))utfand(A)=(utfand(A0A1),utfand(A1))

 

tfor(A)=(tfor(A0),tfor(A1+A0))utfor(A)=(utfor(A0),utfor(A1A0))

还有一点就是,先递归再转换还是先转换再递归是对结果没有影响的,所以可以把tfutf写成一个函数。

P.S. http://picks.logdown.com/posts/179290-fast-walsh-hadamard-transform

posted @   zhuohan123  阅读(1715)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示