2015-08-20 2 views
0

Я пытаюсь создать функцию для вейвлета мексиканской шляпы, которая позволяет изменять размер выходного файла (3x3, 5x5, 15x15 и т. Д.). Приведенный ниже код работает только (получает симметричную форму) для входа 5x5, но если он попытается получить выход 15x15 (d = 15), результат не будет центрировать самое высокое значение в середине.Выход симметричной матрицы с переменным размером

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) 

Это результат для ввода 5х5: This is the result for 5x5 input

И это результат для 15x15:

enter image description here

Спасибо за любую помощь! :)

+1

Почему выход вашего корпуса 15 x 15 всего 5 x 5? (Clue: первая строка вашей mex-функции). – strubbly

+0

Да. Это была проблема. Я изменил его сейчас и работает. :) – Litwos

ответ

1

Вы только показываете нижний левый угол шляпы. Поскольку ваша функция mex начинается с создания матрицы размером 5 x 5, вы заполняете ее именно этим углом 15 x 15 объектов, которые вы пытаетесь создать. Это, конечно, не симметрично.