可变尺寸对称矩阵输出

时间:2015-08-20 07:36:35

标签: python matrix wavelet

我正在尝试为Mexican Hat小波创建一个函数,它允许可变的输出大小(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)

这是5x5输入的结果: This is the result for 5x5 input

这是15x15的结果:

enter image description here

感谢您的帮助! :)

1 个答案:

答案 0 :(得分:1)

您只显示帽子的左下角。因为你的mex函数首先创建一个5 x 5矩阵,然后用你试图创建的15 x 15那个角填充它。这当然不是对称的。