Math::WalshTransform

ふと圧縮回路の話で「DCTとかは複雑になるので回路化しません」とか言われた瞬間に、むかーし、どっかの雑誌で読んだ「うぉるしゅあだまーる変換」なるものを思い出す。んで、これどーよ?とついうっかり言ってしまったので調べることになる。
調べてみると、これが回路化にはうってつけの単純な市松模様状の基底 (1, -1のみ)を使う方法。実はアダマール変換とウォルシュ変換は別もんで、アダマール
H_2 = \left[ \begin{array} 1 && 1\\ 1 && -1 \end{array} \right] , H_N = \left[ \begin{array} N_n && N_n\\ N_n && -N_n \end{array} \right]
てな再起定義になってるっぽい。ウォルシュはこれを空間周波数順に行を並び替えたものだ(圧縮などの応用にはこっち)。ああ、おバカにもわかりやすい*1

これでブロックをZigZagすればよいのかな、、、、と実験クラスをrubyで書いてみてからふと検索窓に残った読んでなかったのを見つける。あ゛、cpanだ。まあ、検算がてらに、と拾ってきて書き始めるとついついPerlに汚染されてしまった。

。。。。きっとrubyでもあるんだろうなあ・・・*2
記録
圧縮率0
圧縮率25%
圧縮率50%
圧縮率75% くるしい
圧縮率85% だめだ〜

*1:ここ、ポイント高いです ^^;

*2:愚者なので再発明家になります