AForge FFT2 和 matlab FFT2 结果不匹配
AForge FFT2 and matlab FFT2 results dont match
我尝试使用 Aforge.Math 在 2D 复数矩阵上进行 FFT2,并在 matlab 上进行相同的尝试
在 C# 上,对于 AForge:
Complex[,] array2D = new Complex[,] { { (Complex)1, (Complex)2 }, { (Complex)3, (Complex)4 }, { (Complex)5, (Complex) 6 }, { (Complex)7, (Complex)8 } };
FourierTransform.FFT2(array2D,FourierTransform.Direction.Forward);
在 Mathlab 上:
x =[1 2; 3 4; 5 6; 7 8]
fft2(x)
可惜结果不一样
对于 C#:
数学实验室:
36.0000 + 0.0000i -4.0000 + 0.0000i
-8.0000 + 8.0000i 0.0000 + 0.0000i
-8.0000 + 0.0000i 0.0000 + 0.0000i
-8.0000 - 8.0000i 0.0000 + 0.0000i
我不知道为什么结果不同,顺便说一下,我只能使用工具,不知道有关 FFT2 的详细信息。
更新:AForge 结果根据输入矩阵大小缩放!
要获得与在 matlab 中相同的结果,请将方向更改为 Backward
:
FourierTransform.FFT2(array2D,FourierTransform.Direction.Backward);
我尝试使用 Aforge.Math 在 2D 复数矩阵上进行 FFT2,并在 matlab 上进行相同的尝试
在 C# 上,对于 AForge:
Complex[,] array2D = new Complex[,] { { (Complex)1, (Complex)2 }, { (Complex)3, (Complex)4 }, { (Complex)5, (Complex) 6 }, { (Complex)7, (Complex)8 } };
FourierTransform.FFT2(array2D,FourierTransform.Direction.Forward);
在 Mathlab 上:
x =[1 2; 3 4; 5 6; 7 8]
fft2(x)
可惜结果不一样
对于 C#:
数学实验室:
36.0000 + 0.0000i -4.0000 + 0.0000i
-8.0000 + 8.0000i 0.0000 + 0.0000i
-8.0000 + 0.0000i 0.0000 + 0.0000i
-8.0000 - 8.0000i 0.0000 + 0.0000i
我不知道为什么结果不同,顺便说一下,我只能使用工具,不知道有关 FFT2 的详细信息。 更新:AForge 结果根据输入矩阵大小缩放!
要获得与在 matlab 中相同的结果,请将方向更改为 Backward
:
FourierTransform.FFT2(array2D,FourierTransform.Direction.Backward);