import math as m
import numpy as np
import matplotlib.pyplot as plt

fe=4000 # fréquence d'échantillonnage (en Hz)
Te=1/fe # période d'échantillonnage (en s)
Tacq=1 # durée d'acquisition (en s)
N=Tacq*fe # nombre de points

# Amplitudes (Ei en V) et fréquences (fi en Hz) des composantes du signal
E1=1
E2=0.5
f1=50
f2=400

# Listes des instants et des valeurs du signal
t=np.arange(0,Tacq,Te)
def signal(t):
    return(E1*np.cos(2*np.pi*f1*t)+E2*np.cos(2*np.pi*f2*t))
s=[signal(ti) for ti in t]

# Courbe s(t)
plt.plot(t,s)
plt.axis([0,5/f1,-2,2])
plt.xlabel('t (s)')
plt.ylabel('s(t) (V)')
plt.grid()
plt.show()

# TFD du signal s(t)
fourier=np.fft.rfft(s) 
freq=np.fft.rfftfreq(N,d=Te)
print(N,len(t),len(fourier),fourier[0],len(freq))

"""amplfourier=[0 for i in range(len(fourier))]
amplfourier[0]=[fourier[0]/N]
for i in range(1,len(fourier)):
    amplfourier[i]=np.abs(fourier[i])*2/N"""
amplfourier=np.abs(fourier)*2/N

# Tracé du spectre du signal s(t)
plt.plot(freq,amplfourier)
plt.xlabel('f (Hz)')
plt.ylabel('amplitudes (V)')
plt.grid()
plt.show()