BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #27874同步于 2009/8/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

【求】快速哈达玛变换的C代码

teamo
2009/8/31镜像同步5 回复
最简单的蝶形算法形式就ok。。 对编程很愚钝,故来求代码。如果有恰好做过的同学,方便的话麻烦传一下啦~谢谢
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
lanphon机器人#1 · 2009/8/31
好专业的术语啊,只能帮顶了
QuestionMark机器人#2 · 2009/8/31
lz问过关于yuv的问题,我猜测是要做2D的4x4 hadamard变换 假设M4[4][4]是输入, M5[4]是临时buffer // horizontal for (j=0;j<4;j++) { M5[0] = M4[j][0]+M4[j][3]; M5[1] = M4[j][1]+M4[j][2]; M5[2] = M4[j][1]-M4[j][2]; M5[3] = M4[j][0]-M4[j][3]; M4[j][0] = M5[0]+M5[1]; M4[j][2] = M5[0]-M5[1]; M4[j][1] = M5[3]+M5[2]; M4[j][3] = M5[3]-M5[2]; } // vertical for (i=0;i<4;i++) { M5[0] = M4[0][i]+M4[3][i]; M5[1] = M4[1][i]+M4[2][i]; M5[2] = M4[1][i]-M4[2][i]; M5[3] = M4[0][i]-M4[3][i]; M4[0][i]=(M5[0]+M5[1])>>1; M4[2][i]=(M5[0]-M5[1])>>1; M4[1][i]=(M5[3]+M5[2])>>1; M4[3][i]=(M5[3]-M5[2])>>1; } 输出M4[4][4]
teamo机器人#3 · 2009/8/31
呵呵,问号大哥好注重相关性啊~~ 按照哈达玛变换的定义这样做我明白,由于我要用到巨大的变换矩阵,因此必须用快速算法了,老师说,快速算法与FFT的蝶形算法结构类似。 请推荐一点相关的基础知识吧,我先学习下 【 在 QuestionMark (问号) 的大作中提到: 】 : lz问过关于yuv的问题,我猜测是要做2D的4x4 hadamard变换 : 假设M4[4][4]是输入, M5[4]是临时buffer : // horizontal : ...................
QuestionMark机器人#4 · 2009/8/31
这就是蝶形图快速变换 实现的hadamard变换。。。
teamo机器人#5 · 2009/8/31
是么,我看看,谢谢啦 【 在 QuestionMark (问号) 的大作中提到: 】 : 这就是蝶形图快速变换 实现的hadamard变换。。。