我对 Haar 变换及其逆变换的实现感兴趣,这样组合时总是会产生恒等运算。我的输入是给定范围内的离散序数 - 我需要 Haar 变换的输出是类似的离散序数(或定点)数。
我的工作基础是,如果我的输入信号包含范围内均匀分布的样本而且,我的转换后的信号也是如此,那么原则上,我的原始信号应该由逆 haar 完美地再现。
我已经使用 GNU Octave 涉足了这个(Matlab)实现:
http://people.sc.fsu.edu/~jburkardt/m_src/haar/haar.html
它使用双精度值...迫使我使用 round() 来建立转换后数据的离散表示,以便将转换后的表示拟合到与原始数据相同的状态空间中。不出所料,我发现我需要再次使用 round() 来处理逆变换的输出。
对于大多数信号值来说,round(haar_2d_inverse(round(haar_2d(signal)))) 并不完全是恒等函数,这可能不足为奇……有趣的是,在重构信号 - 看起来大致对称(在少数重构样本上 +1 或 -1),这似乎几乎与 n 的选择无关。
我想知道是否有适用于序数样本的 haar_2d 和 haar_2d_inverse 的“更好”实现?异常是 Haar 实现本身的结果还是我在中间阶段应用 round() 的方式?如果是后者,我可以在四舍五入之前通过缩放来纠正这个问题吗?