1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
#Nombre de lignes
nrows=test.nrows
#Création du tableau avec les indices
b=[0]*(nrows-1)
#Remplir le tableau
for i in range (1, nrows-1):
b[i-1]=float(test.cell_value(i,2))
#print("b = ", b)
N=100 #Nombre de coordonnées
s=10 #"sparsité" : nombre max de coordonnées non nulles
n_features = nrows-1 #nombre de points
#Echelle
x1 = np.linspace(-1,1,n_features)
idx = np.nonzero(b) #liste contenant les indices des coordonnées non nulles de a
def f(a,x) :
res=0
for i in range (N) :
res+=a[i]*x**i
return(res)
## Matrice alétoire
#nombre de mesures m nécessaire
m = np.int(s*np.log(N/s))
m = int(m)
#matrice A aléatoire
def gen_mat(m,N):
A = np.zeros((m,N))
for i in range(m):
for j in range(N):
A[i][j] = np.random.randn()
return A
A = gen_mat(m,len(x1))
#print("A = " ,A)
##matrice V pseudo Vandermonde
V=np.zeros((n_features, N)) #Dimenssion de la matrice
k=(np.pi*2)/len(x1)#intervalle
for i in range (len(x1)) :
V[i][0]=1
for j in range (1,N) :
cos = np.cos(i*j*k)
sin = np.sin(i*j*k)
V[i][2*j-1]= cos
V[i][2*j]= sin |
Partager