Sam*_*uel 9 python matlab scipy
我知道的同等功能 conv2
和corr2
MATLAB的是scipy.signal.correlate
和scipy.signal.convolve
.但是该函数imfilter
具有处理数组边界外部的属性.像symmetric
,replicate
和circular
.Python能做到这一点
小智 6
只是为了添加一些可靠的代码,我想要imfilter(A, B)
在python中等效于简单的2D图像和滤镜(内核)。我发现以下给出与MATLAB相同的结果:
import scipy.ndimage
import numpy as np
scipy.ndimage.correlate(A, B, mode='constant').transpose()
Run Code Online (Sandbox Code Playgroud)
对于给定的问题,这将起作用:
scipy.ndimage.correlate(A, B, mode='nearest').transpose()
Run Code Online (Sandbox Code Playgroud)
请注意,由于某种原因,MATLAB返回了预期答案的转置。
有关更多选项,请参见此处的文档。
编辑1:
有通过MATLAB给出记录更多的选择这里。具体来说,如果我们希望使用该'conv'
选项,则可以使用MATLAB代码(例如):
imfilter(x, f, 'replicate', 'conv')
Run Code Online (Sandbox Code Playgroud)
这与python等效:
scipy.ndimage.convolve(x, f, mode='nearest')
Run Code Online (Sandbox Code Playgroud)
请注意'replicate'
,MATLAB 'nearest'
中的python 与SciPy中的相同。