From 0f84d76db21abf275d061b86d5f0d5dfe9e90306 Mon Sep 17 00:00:00 2001 From: Pierre-antoine Comby Date: Sun, 5 May 2019 15:44:16 +0200 Subject: [PATCH] better init --- 455-Codage_Sources/algo_code/LBG.py | 32 +++++++++++++---------------- 1 file changed, 14 insertions(+), 18 deletions(-) mode change 100644 => 100755 455-Codage_Sources/algo_code/LBG.py diff --git a/455-Codage_Sources/algo_code/LBG.py b/455-Codage_Sources/algo_code/LBG.py old mode 100644 new mode 100755 index 113300a..35b36f2 --- a/455-Codage_Sources/algo_code/LBG.py +++ b/455-Codage_Sources/algo_code/LBG.py @@ -1,36 +1,31 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -""" -Created on Sun May 5 13:59:37 2019 - -@author: pac -Algorithme de Linde-Buzo-Gray, version 2D -""" - import numpy as np import matplotlib.pyplot as plt from scipy.spatial import Voronoi, voronoi_plot_2d - -mean= [0,0] -cov = [[1,0],[0,1]] +# M = 20; N =100; #point par cluster K = N*M means = np.random.rand(M,2)*10 X = np.zeros((K,2)) plt.figure() - +cov = np.array([[1,0],[0,1]]) for m in range(M): xi = np.random.multivariate_normal(means[m,:],cov,N) X[m*N:(m+1)*N] = xi plt.plot(xi[:,0],xi[:,1],'+') plt.plot(means[:,0],means[:,1],'ob') -plt.show() -# X = np.random.multivariate_normal(mean,cov,K) -Y0 = np.random.multivariate_normal(mean, cov,M) -Y0 = means; +mean= np.mean(X,axis=0) + +Y0 = np.random.multivariate_normal(mean, 10*cov, M) +plt.show() +print(Y0) +Y0= means +plt.plot(Y0[:,0],Y0[:,1],'ok') + def LBG(X,Y0,eps=1e-5,maxiter=1000): Y = Y0.copy() old_dist = np.inf @@ -45,7 +40,8 @@ def LBG(X,Y0,eps=1e-5,maxiter=1000): cluster_index[k] = j dist += sum((X[k]-quant_min)**2) for j in range(len(Y)): - Y[j,:] = np.mean(X[cluster_index==j],axis=0) + Y[j,:] = np.mean(X[cluster_index==j],axis=0) + print(Y) if dist-old_dist < eps: break else: @@ -56,6 +52,6 @@ vor = Voronoi(Y) voronoi_plot_2d(vor,show_vertices=False) print(Y) plt.plot(X[:,0],X[:,1],'+') -plt.plot(Y[:,0],Y[:,1],'o') -#plt.plot(Y0[:,0],Y0[:,1],'ob') +plt.plot(Y[:,0],Y[:,1],'ob') +plt.plot(Y0[:,0],Y0[:,1],'ok') plt.show()