# -*- coding:  utf-8 -*-
"""
Created on Mond Mar 20 16:26:11 2017

@author: Sabloniere
"""

import math as m
import numpy as np
import matplotlib.pyplot as plt
import os

# on précise le répertoire dans lequel se trouve le fichier de données (chemin et nom du répertoire à adapter) :
os.chdir(r"C:\Users\Virginie\Desktop\MP\MPI\élec\TFD")
# rq avant le chemin 'r' signifie 'raw' i.e. 'brut' => pas de problème de lecture du chemin 

## on convertit le fichier texte de données en un tableau comportant 2 colonnes : 
# 1e colonne : temps : le temps en s 
# 2e colonne : U : la tension en V
t,U=np.loadtxt("créneau.txt",unpack=True)

N=len(t)
Te=t[1]-t[0] # période d'échantillonnage (en s)


## Tracer de la courbe U = f(t) pour visualiser l'évolution de la tension pendant l'acquisition
plt.plot(t,U)
plt.xlabel('t (s)')
plt.ylabel('U (V)')
plt.grid()
plt.show()

fourier = np.fft.rfft(U)
freq=np.fft.rfftfreq(N,d=Te)
amplfourier=np.abs(fourier)*2/N
plt.plot(freq,amplfourier)
plt.axis([0,0.1e6,-0.1,3])
plt.xlabel('f (Hz)')
plt.ylabel('amplitudes (V)')
plt.grid()
plt.show()

# construction d'un nouveau signal échantillonné avec un nombre de points = 2^p
"""p=round(np.log(N)//np.log(2))
Np=2**p
Np=8192
Tep = (t[-1]-t[0])/Np # nouveau pas de temps pour avoir N échantillons sur le même intervalle de temps 
s = [U[0]] # s sera le signal échantillonné sur N points 
for j in range(1,Np-1) : 
    t=j * Tep # instant pour le nouvel échantillonnage 
    i = int(t/Te) # t est compris entre i * Delta_t_a et (i+1) * Delta_t_a 
    val = U[i] + (U[i+1]-U[i]) * (t-i * Te)/ Te # extrapolation linéaire de la valeur du signal à t 
    s.append(val) 
s.append(U[-1])

fourier2 = np.fft.rfft(s)
freq2=np.fft.rfftfreq(Np,d=Tep)
amplfourier2=np.abs(fourier2)*2/Np
plt.plot(freq2,amplfourier2)
plt.xlim([0,100e3])
plt.xlabel('f (Hz)')
plt.ylabel('amplitudes (V)')
plt.grid()
plt.show()"""