Cálculo eficiente de cosseno em python
Eu gero algumas séries temporais a partir de uma densidade espectral de potência teórica.
Basicamente, minha função no tempo-espaço é dada porX(t) = SUM_n sqrt(a_n) + cos(w_n t + phi_n)
, Ondea_n
é o valor doPSD
a um dadow_n
ephi
é alguma fase aleatória. Para obter uma timeseries realista, tenho que resumir2^25
modos e meut
é claro é tamanho2^25
também.
Se eu fizer isso com python, isso levará algumas semanas ...
Existe alguma maneira de acelerar isso? Como algum cálculo vetorial?
t_full = np.linspace(0,1e-2,2**12, endpoint = False)
signal = np.zeros_like(t_full)
for i in range(w.shape[0]):
signal += dataCOS[i] * np.cos(2*np.pi* t_full * w[i] + random.uniform(0,2*np.pi))
onde dataCOS é sqrt a_n, w = w e random.uniform representa o desvio de fase aleatório phi