2015-08-20 2 views
0

J'essaye de créer une fonction pour l'ondelette Hat mexicaine, qui permet une taille de sortie variable (3x3, 5x5, 15x15, etc.). Le code ci-dessous ne fonctionne que (obtient une forme symétrique) pour une entrée 5x5, mais s'il essaie d'obtenir une sortie 15x15 (d = 15), le résultat ne centre pas la valeur la plus élevée au milieu.Sortie matricielle symétrique à taille variable

a = np.empty([5, 5]) 

def mex(array): 
    h = np.empty_like(array, dtype=np.float) 
    print "Say the filter size (d)" 
    d = int(raw_input("> ")) 
    for line in range(array.shape[0]): 
     for col in range(array.shape[1]): 
      x = col - (d - 1)/2 
      y = (d - 1)/2 - line 
      value = 0 
      value = (1 - x**2 - y**2) * math.exp(-((x**2)+(y**2))/2) 
      h[line, col] = value 
    print h 
    return h 

b = mex(a) 

Ceci est le résultat pour l'entrée 5x5: This is the result for 5x5 input

Et ceci est le résultat de 15x15:

enter image description here

Merci pour toute aide! :)

+1

Pourquoi la sortie de votre boîtier 15 x 15 est-elle seulement de 5 x 5? (Indice: première ligne de votre fonction mex). – strubbly

+0

Oui. C'était le problème. Je l'ai modifié maintenant et fonctionne. :) – Litwos

Répondre

1

Vous montrez seulement le coin inférieur gauche du chapeau. Parce que votre fonction mex commence par créer une matrice 5 x 5, vous remplissez celle-ci avec juste ce coin de la chose 15 x 15 que vous essayez de créer. Ce qui bien sûr n'est pas symétrique.