我需要与Matlab(八进制)离散Laplacian运算符(函数)del2()等价的Python/Numpy。我尝试了一些Python解决方案,但没有一个与del2的输出相匹配。我有八度音阶
image = [3 4 6 7; 8 9 10 11; 12 13 14 15;16 17 18 19]
del2(image)
这就产生了结果
0.25000 -0.25000 -0.25000 -0.75000
-0.25000 -0.25000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000
0.25000 0.25000 0.00000 0.00000
在Python上我试过
import numpy as np
from scipy import ndimage
import scipy.ndimage.filters
image = np.array([[3, 4, 6, 7],[8, 9, 10, 11],[12, 13, 14, 15],[16, 17, 18, 19]])
stencil = np.array([[0, 1, 0],[1, -4, 1], [0, 1, 0]])
print ndimage.convolve(image, stencil, mode='wrap')
结果是
[[ 23 19 15 11]
[ 3 -1 0 -4]
[ 4 0 0 -4]
[-13 -17 -16 -20]]
我也试过了
scipy.ndimage.filters.laplace(image)
结果就是这样
[[ 6 6 3 3]
[ 0 -1 0 -1]
[ 1 0 0 -1]
[-3 -4 -4 -5]]
所以所有的输出似乎都不匹配。八度码del2.m表明它是拉普拉斯算子。我遗漏了什么吗?
通过使用适当的stencil对数组进行卷积,可以使用卷积来计算laplacian:
根据这里的代码
http://cns.bu.edu/~tanc/pub/matlab_octave_compliance/datafun/del2.m
我试图编写一个与Python等价的程序。这似乎是工作,任何反馈将不胜感激。
也许你在找^{} 。
相关问题 更多 >
编程相关推荐