MATLAB 中的快速 Hartley 变换实现

信息处理 matlab 离散信号 傅里叶变换 自由度 参考实现
2022-02-09 00:20:57

我想在 MATLAB 的脚本文件中实现快速哈特利变换(特别是离散哈特利变换)。有谁知道在 MATLAB 或其他语言中有一个参考实现,以便一个完整的新手可以理解它?

2个回答

您可以使用维基百科文章中给出的 DFT 的 DHT 属性对于实值函数f, 它的 DHT 在 DFT 方面由下式给出

Hf={Ff}{Ff}.

因此,可以给出快速哈特利变换的函数

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中找到。

对于可以提供超越算法优化的加速的改进版本,可以考虑其他因素,例如内存技巧、硬件优化、二进制输入/输出的使用、更高维度的扩展。您可以检查例如: