离散哈特莱变换(DHT)及快速哈特莱变换(FHT)学习
说在前边
最近复习\(DSP\)的时候,发现了一个号称专门针对离散实序列的变换,经分析总运算量为普通\(FFT\)的几乎一半,而且完全没有复数。这么强的吗?于是花了一个下午,去学习了一下。。。于是去图书馆翻了几乎所有的\(dsp\)课本。。。发现了这本书 西安电子科技大学出版社《数字信号处理》第二版!竟然花了一节在讲\(DHT\)和\(FHT\)!竟然还有附录FORTRAN代码(虽然一堆错)!这里把这个东西稍微普及一下。。。不过估计没人用的上
离散哈特莱变换(DHT)
引入
对于序列\(x(n)\)其\(N\)点\(DFT\)具有简单的共轭对称性,即\[X(N - k) = X^*(k), k = 0, 1 ... ,N-1 \]
所以只要计算\(X(k)\)的前\(N/2\)个值,则后\(N/2\)可以通过上式求得,\(X(k)\)的\(N/2\)个复数正好对应\(N\)个实数数据(\(N\)点实序列\(DFT\),也可以通过把\(N\)个实数,压成\(N/2\)个复数,再利用共轭对称性求解,这里不做详解)。由此可见,一个\(N\)点实序列的\(DFT\),完全可由\(N\)个实数数据确定。由此,我们引出一种直接对于实序列进行实数域变换的离散哈特莱变换(\(DHT\))。\(DHT\)将\(x(n)\)看成实数数据,而不是像\(DFT\)一样看作虚部为\(0\)的复数,因此节省了一半的空间,运算效率也提升了近一倍,且\(DFT\)与\(DHT\)之间存在简单的关系,容易实现相互转换。
预备知识
- \(DFT\)的意义
- \(FFT\)实现
- 最好学过\(DSP\)
定义
设\(x(n), n = 0, 1,..., N-1\),为一实序列,其\(DHT\)定