Skuteczne obliczanie cosinusa w pytonie
Generuję kilka szeregów czasowych z teoretycznej gęstości widmowej mocy.
Zasadniczo, moja funkcja w czasoprzestrzeni jest podana przezX(t) = SUM_n sqrt(a_n) + cos(w_n t + phi_n)
, gdziea_n
jest wartościąPSD
w danymw_n
iphi
jest jakaś losowa faza. Aby uzyskać realistyczne czasy, muszę podsumować2^25
tryby i mójt
oczywiście ma rozmiar2^25
także.
Jeśli zrobię to za pomocą Pythona, zajmie to kilka tygodni ...
Czy jest jakiś sposób, żeby to przyspieszyć? Jak niektóre obliczenia wektorowe?
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))
gdzie dataCOS jest sqrt a_n, w = w i random.uniform reprezentuje phi losowego przesunięcia fazowego