我想使用FastFourierTransformation来识别模式,以便预测我的监控指标的未来值。我想做的是:
我监控传入的流量负载,这是季节性重复(白天的高选择),另外一个星期的趋势(周末流量较低,也是季节性重复)。
虽然我尝试了一些增强回归算法,但我还想使用FFT来识别最重要的系数,以便识别这两个最重要的频率,然后尝试推断以预测流量。不久的将来。
虽然我在数学方面的理论背景给我带来了一些麻烦,但我正在与apache.commons.math3.transform.FastFourierTransformation
挣扎。
假设我使用doube [] array
在观察的时间范围内存储我的最新流量负载,我使用以下代码:
double [] initialSignal = getMonitoringData(timeslide);
FastFourierTransformer fft = new FastFourierTransformer(DftNormalization.STANDARD);
Complex [] result = fft.transform(initialSignal, TransformType.FORWARD);
但是我不熟悉Complex []
数组所代表的内容。数组中每个Complex对象的虚构属性是否代表相关的正弦系数?
那么,如果我想取去噪声的初始信号,我只需将Complex []结果数组的不太重要的系数设置为零?
但是,如果我有以下
Complex [] denoised = fft.transform(importantCoefficiants, TransformType.INVERSE);
结果仍然是一个Complex数组。如何获得时间序列的新变换x(t)值?
在对初始时间序列进行去噪后,如何进行推断以预测x(t+1), x(t+2) ... x(t+n) values
?
答案 0 :(得分:0)
嗯,我猜我昨天晚上找到了一个解决方案,与erickson的回答非常相似。 我计算x ^ 2 + y ^ 2然后我考虑最重要的系数。我将数组的其他元素设置为零,然后执行IFFT。我现在的最后一个问题是:
如何在Complex数组中推断出给定的结果,以便预测未来的值? 例如,如果我有n = 4096个样本(Complex [4096]数组)作为我的输入,那么我认为x(n + 1)的值将是数组[0]的值,x的值( n + 2)将是数组[1]等的值?