【发布时间】:2018-12-06 10:07:43
【问题描述】:
我正在开发一个估计模块,我们正在计算季节性变化和预测。以前,我们使用固定的 5 阶正弦函数进行估计。公式如下
doy_seasonality = exp(z[1]*sin(2*pi*doy/365)+z[2]*cos(2*pi*doy/365)
+z[3]*sin(4*pi*doy/365)+ z[4]*cos(4*pi*doy/365)
+z[5]*sin(6*pi*doy/365)+ z[6]*cos(6*pi*doy/365)
+z[7]*sin(8*pi*doy/365)+ z[8]*cos(8*pi*doy/365)
+ z[9]*sin(10*pi*doy/365)+ z[10]*cos(10*pi*doy/365))
现在,我们已经尝试对我们的模型进行一些修改。使用快速傅里叶变换,我们可以自动生成三角函数的阶数。
例如,在我当前的数据集上,我有以下订单数组。
order_FFT = [2, 6, 10, 24], 这样
order_FFT[0] = 2
order_FFT[1] = 6
order_FFT[2] = 10
order_FFT[3] = 24
这里将有 4 个订单。对于其他一些数据集,可能或多或少没有。的订单。因此,我需要定义一个 for 循环,以便修改公式。
使用我当前的数据集和对应的 orders_FFT 数组,for 循环应该执行以下公式:
doy_seasonality = exp(z[1]*sin(2*pi*doy/365)+z[2]*cos(2*pi*doy/365)
+z[3]*sin(6*pi*doy/365)+ z[4]*cos(6*pi*doy/365)
+z[5]*sin(10*pi*doy/365)+ z[6]*cos(10*pi*doy/365)
+z[7]*sin(24*pi*doy/365)+ z[8]*cos(24*pi*doy/365)
这基本上意味着
doy_seasonality = exp(z[1]*sin(order_FFT[0]*pi*doy/365)+z[2]*cos(order_FFT[0]*pi*doy/365)
+z[3]*sin(order_FFT[1]*pi*doy/365)+ z[4]*cos(order_FFT[1]*pi*doy/365)
+z[5]*sin(order_FFT[2]*pi*doy/365)+ z[6]*cos(order_FFT[2]*pi*doy/365)
+z[7]*sin(order_FFT[3]*pi*doy/365)+ z[8]*cos(order_FFT[3]*pi*doy/365)
我在试图为此找出一个 for 循环代码时不知所措。很抱歉,我无法在这里展示我自己的努力。
【问题讨论】:
-
什么是
z?请提供一个可重现的最小示例。 -
z 是一个值列表。对于每个 order_FFT 值,将有 2 个对应的 z 值(一个用于正弦部分,一个用于余弦部分)。
-
什么是
doy?请提供一个可重现的最小示例。 -
doy 代表一年中的一天。 doy 值已经从另一个函数传递给公式。
-
我知道缩写。我不知道这是单个值还是向量。请注意,如果您只是提供了一个可重现的最小示例,我可能已经回答了这个问题。
标签: r python-3.x numpy for-loop