Matlab';Python中的convn

Matlab';Python中的convn,python,matlab,numpy,scipy,Python,Matlab,Numpy,Scipy,我正在将Matlab代码翻译成Python代码,我需要您的帮助来了解如何在Matlab中翻译这行代码 Matrix = convn(Matrix2, ones(x,x,x)/x^3, 'same'); 我在问,因为Matlab中的conv2在Python中没有直接的等价物,我不得不使用这里提出的解决方案: 旋转图像的位置: def conv2(x, y, mode='same') return np.rot90(convolve2d(np.rot90(x, 2), np.rot90(y, 2

我正在将Matlab代码翻译成Python代码,我需要您的帮助来了解如何在Matlab中翻译这行代码

Matrix =  convn(Matrix2, ones(x,x,x)/x^3, 'same');
我在问,因为Matlab中的conv2在Python中没有直接的等价物,我不得不使用这里提出的解决方案:

旋转图像的位置:

def conv2(x, y, mode='same')
return np.rot90(convolve2d(np.rot90(x, 2), np.rot90(y, 2), mode=mode), 
因此,我认为我们也必须做类似的事情,但在3D中,因此我请求您的帮助


谢谢

我有两个疯狂的想法

一是我们可以在Python中直接使用MATLAB的“convn”。通过这样做,在Python中打开一个MATLAB服务器,并使用“eng=MATLAB.engine.connect_MATLAB()”

现在,我们可以使用所有属于MATLAB的东西

矩阵=eng.convn(矩阵2,一(x,x,x)/x^3,‘相同’)

事实上,当这些代码以一个小维度的矩阵结束时,我们可以用这个方法在Python中运行整个旧代码。我们用

'numpyArray=np.array(MATLAB_array,dtype=np.XXX)'

小心点。如果矩阵的维数很大,则转换速度会很慢

另一个疯狂的想法是在“Tensorflow”中使用“tf.nn.conv3d”。副作用是间接的。我们必须构建一个会话以使用“sess=tf.session()”运行它


我不是程序员,但我认为MATLB不愿意被Python取代。如果您在MATLAB中做了大量工作,则可能很难翻译代码

您是否查看了
fftconvolve
?我尝试在另一个上下文中使用fftconvolve,虽然它很快,但给了我不同的结果(除非像上面的例子那样旋转)和某种“零工件”,它们是接近零的数字,而不是实际的零。这导致了后来的错误,因为我在指数中使用了这些值。但我会再看一次!有一个
np.convolve
,具有相同的
模式
选项。虽然它可能更像<代码> CONV 或<代码> VAR2。考虑使用代码块来改进这个答案的呈现。