2016-08-22 13 views
3

私はMatlabコードをPythonコードに翻訳しています。私はMatlabでこの行をどのように翻訳するかを知るためにあなたの助けが必要です。MatlabのPythonでの翻訳

Matrix = convn(Matrix2, ones(x,x,x)/x^3, 'same'); 

MATLABでのCONV2は、Pythonで直接対応していないと私は解決策を使用していたので、私は、求めているが、ここで提案:

:彼らは画像を回転 Is there a Python equivalent of MATLAB's conv2 function?

def conv2(x, y, mode='same') 
return np.rot90(convolve2d(np.rot90(x, 2), np.rot90(y, 2), mode=mode), 

私はこのようにしなければならないと思いますが、3Dで、なぜ私はあなたの助けを求めています!

ありがとうございます!

+2

あなたは 'fftconvolve'を見ましたか? http://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.fftconvolve.html#scipy.signal.fftconvolve – Suever

+0

私は別の文脈でfftconvolveを使用しようとしましたが、それは速かったものの、私に与えました上記の例のように回転させない限り)、実際のゼロの代わりにゼロに近い数の "ゼロのアーティファクト"を生成することができます。これは、私が指数関数でこれらの値を使用して以来、後でエラーにつながった。しかし、私は再び見てみましょう! –

+0

同じ 'mode'オプションを持つ' np.convolve'があります。それは 'conv'や' conv2'のようなものかもしれませんが。 – hpaulj

答えて

0

まあ、私は2つの狂ったアイデアがあります。

私たちはPythonでMATLABの 'convn'を直接使うことができます。これを行うことで、Pythonで 'eng = matlab.engine.connect_matlab()'を使用してMATLABサーバーを開きます。

ここで、MATLABに属するすべてのものを使用できます。

マトリックス= eng.convn(行列2、もの(X、X、X)/ X^3 '同じ')

実際には、我々はこの方法ではPythonで全体の古いコードを実行することができ、ときに、これらのコードは小さな次元の行列で終わります。

'numpyArray = np.array(MATLAB_array、dtype = np.XXX)'を使用して 'Numpy'に変換します。

注意してください。行列の大きさが大きければ、この変換は遅くなります。

「Tensorflow」で「tf.nn.conv3d」を使用することも賢明です。副作用は間接的です。 'sess = tf.Session()'で実行するためにセッションを構築する必要があります。

私はプログラマーではありませんが、MATLBはPythonに置き換えたくないと思います。 MATLABで多くの作業を行っている場合は、コードを翻訳するのが難しいかもしれません。

+0

コードブロックを使用してこの回答の表示を改善することを検討してください。 –

関連する問題