vla*_*sch 7 c++ algorithm fft dft
我有一个时间离散信号,可能包含许多缺失值。我想对其进行傅里叶变换。
我该怎么做才能正确处理它们?
下图可能显示这种情况
signalpresence x x x x x x x x x x x x x x x x x x x x x
timesteps ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
Run Code Online (Sandbox Code Playgroud)
缺失值是周期性的,因为它们来自图像传感器的帧间隙,行频率高于实际图像高度。
将缺失值设置为零会导致输出失真。
是否有一个处理时间/值对的库?
(当然它也必须快:-))
这实际上解决起来并不简单,因为这是一个如何对丢失的数据进行最好的有根据的猜测的问题。Lomb-Scargle 算法给出了频域优化插值方法,该算法在 MATLAB 中可通过以下plomb函数获得
更多信息:
\n\n\n您可以做的一件事是通过对除缺失值之外的全零设置为 1 的向量进行傅里叶变换来确定解如何变化。其中每一个都会为您提供一个向量,输出可以沿该向量变化,而不会破坏非缺失值设置的约束。您可以缩放它们并将它们添加到 FFT 中,该 FFT 是从仅用 0 替换缺失值所产生的向量中获得的。
每个缺失值 FFT 将给出一个线性无关向量。我认为它们都是正弦波,因为 FFT 几乎是它自己的倒数。然后,您的解向量可以将这些正弦波添加到其中,而不会破坏已知输入设置的约束。也就是说,解决方案将采用以下形式:
FFT(dataWithZeroesForMissing)
+ c1*FFT(dataWithAllZeroesExceptOneMissingValueSetToOne1)
+ c2*FFT(dataWithAllZeroesExceptOneMissingValueSetToOne2)
+ ...
Run Code Online (Sandbox Code Playgroud)
您的目标是选择“最佳” c1,c2等等。这到底意味着什么取决于用例。我最好的猜测是“最小化结果的平方和”。
| 归档时间: |
|
| 查看次数: |
5708 次 |
| 最近记录: |