私はMATLABツールボックスの1つを再実装しようとしています。 彼らはそこにfftを使用します。 同じデータに対して同じ操作を実行すると、matlabの結果と異なる結果になります。 ちょうど見てみましょう:MatlabのFFTとnumpy/scipyの結果が異なります
MATLAB:
Msig =
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 1 0 0
0 0 0 0
fft(Msig.')
Columns 1 through 4
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
Columns 5 through 6
1.0000 0
0 - 1.0000i 0
-1.0000 0
0 + 1.0000i 0
PYTHON:
Msig=
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 0., 0., 0.]])
np.fft.fft(Msig.transpose())
array([[ 0.0 +0.00000000e+00j, 0.0 +0.00000000e+00j,
0.0 +0.00000000e+00j, 0.0 +0.00000000e+00j,
0.0 +0.00000000e+00j, 0.0 +0.00000000e+00j],
[ 1.0 +0.00000000e+00j, -0.5 +8.66025404e-01j,
-0.5 -8.66025404e-01j, 1.0 -3.88578059e-16j,
-0.5 +8.66025404e-01j, -0.5 -8.66025404e-01j],
[ 0.0 +0.00000000e+00j, 0.0 +0.00000000e+00j,
0.0 +0.00000000e+00j, 0.0 +0.00000000e+00j,
0.0 +0.00000000e+00j, 0.0 +0.00000000e+00j],
[ 0.0 +0.00000000e+00j, 0.0 +0.00000000e+00j,
0.0 +0.00000000e+00j, 0.0 +0.00000000e+00j,
0.0 +0.00000000e+00j, 0.0 +0.00000000e+00j]])
私が得ることができる最高の場合、NPのパラメータを持つI混乱(軸など)。 fft.fft()/ np.fft.fft2()/ np.fft.fftn()は同じ値ですが、シフトされています。残念ながら手動シフトはオプションではありません。なぜなら、Msig行列のサイズと形状は入力パラメータによって異なるからです。
あなたはこの問題を解決するための手がかりを持っていますが、原因は何か?
は右、いくつかの無関係な理由のためだけにあるのでしょうか? – Ali