2016-09-09 8 views
-1

私はPythonでmatlab関数を計算しようとしています。Matlab diff(F、var、n)対Python numpy diff(a、n = 1、axis = -1)

y = diff(x,1,2) 

Xされ、グレースケール画像

あなたの質問にコメントして

+1

いくつかの追加情報を提供してください。 MATLABでdiffをどのように呼び出すのですか?あなたはどんなイメージを使っていますか?答えはあなたが期待するものとどう違うのですか? – meetaig

+0

Matlab:fimg = single(gstreet2); xdif_img = diff(fimg、1,2); Python; fimg = fimg.astype( 'float32'); xdif_img = np.diff(fimg、2,1) –

答えて

1

二つがあります。ただし、ドキュメントは、MATLABにし、numpyのの両方で、引数の順序があると述べていますここの問題。

まず、引数の順序をnp.diffに入れ替えました。 MATLABとPythonは同じ引数の順序を使用します。 Pythonは名前付き引数をサポートしているので、このような問題を避けるために引数名を使用するほうがよい場合がよくあります。

第2に、Pythonインデックスは0から始まり、MATLABインデックスは1で始まります。これは軸にも適用されるので、MATLABの軸2はPythonの軸1です。

したがって、Pythonでの正しい関数呼び出しはnp.diff(fimg, 1, 1)ですが、np.diff(fimg, axis=1)はより良いIMOです。

MATLAB:

>> a = reshape(1:100, 10, [])' 

a = 

    1  2  3  4  5  6  7  8  9 10 
    11 12 13 14 15 16 17 18 19 20 
    21 22 23 24 25 26 27 28 29 30 
    31 32 33 34 35 36 37 38 39 40 
    41 42 43 44 45 46 47 48 49 50 
    51 52 53 54 55 56 57 58 59 60 
    61 62 63 64 65 66 67 68 69 70 
    71 72 73 74 75 76 77 78 79 80 
    81 82 83 84 85 86 87 88 89 90 
    91 92 93 94 95 96 97 98 99 100 

>> diff(a,1, 2) 

ans = 

    1  1  1  1  1  1  1  1  1 
    1  1  1  1  1  1  1  1  1 
    1  1  1  1  1  1  1  1  1 
    1  1  1  1  1  1  1  1  1 
    1  1  1  1  1  1  1  1  1 
    1  1  1  1  1  1  1  1  1 
    1  1  1  1  1  1  1  1  1 
    1  1  1  1  1  1  1  1  1 
    1  1  1  1  1  1  1  1  1 
    1  1  1  1  1  1  1  1  1 

のPython:

>>> a = np.arange(100).reshape(10, -1) 
>>> print(a) 
[[ 0 1 2 3 4 5 6 7 8 9] 
[10 11 12 13 14 15 16 17 18 19] 
[20 21 22 23 24 25 26 27 28 29] 
[30 31 32 33 34 35 36 37 38 39] 
[40 41 42 43 44 45 46 47 48 49] 
[50 51 52 53 54 55 56 57 58 59] 
[60 61 62 63 64 65 66 67 68 69] 
[70 71 72 73 74 75 76 77 78 79] 
[80 81 82 83 84 85 86 87 88 89] 
[90 91 92 93 94 95 96 97 98 99]] 
>>> print(np.diff(a, axis=1)) 
[[1 1 1 1 1 1 1 1 1] 
[1 1 1 1 1 1 1 1 1] 
[1 1 1 1 1 1 1 1 1] 
[1 1 1 1 1 1 1 1 1] 
[1 1 1 1 1 1 1 1 1] 
[1 1 1 1 1 1 1 1 1] 
[1 1 1 1 1 1 1 1 1] 
[1 1 1 1 1 1 1 1 1] 
[1 1 1 1 1 1 1 1 1] 
[1 1 1 1 1 1 1 1 1]] 
0

を助けてください、私はnumpyの差分機能を試してみましたが、私は別の答え

を取得し、あなたがに引数を入れ替え表示されますdiffの機能です。

  • 配列

  • N

  • 次元

関連する問題