MATLAB 中的快速 Hartley 变换实现
信息处理
matlab
离散信号
傅里叶变换
自由度
参考实现
2022-02-09 00:20:57
2个回答
您可以使用维基百科文章中给出的 DFT 的 DHT 属性。对于实值函数, 它的 DHT 在 DFT 方面由下式给出
因此,可以给出快速哈特利变换的函数
function Hf = fht(f)
F = fft(f);
Hf = real(F) - imag(F);
end
不过,您需要注意归一化因子,这取决于您以及如何定义 DHT 的比例因子。
对于标准算法版本,您可以在An Algorithm for the Fast Hartley transform,RF Ulmann(带有 Fortran 版本)中获取信息。Lars Gregersen 提供了 FHT的Matlab 版本,与@MaximilianMatthé 给出的完全一样,除了它检查真实的信号输入。C++ 和 C# 版本也可以在ALGLIB: Fast Hartley transform中找到。
对于可以提供超越算法优化的加速的改进版本,可以考虑其他因素,例如内存技巧、硬件优化、二进制输入/输出的使用、更高维度的扩展。您可以检查例如:
- 一种用于二维离散 Hartley 变换的新型分裂基快速算法,2009
- 二进制离散余弦和哈特利变换,2013