【发布时间】:2017-12-26 09:02:21
【问题描述】:
我尝试使用Aforge.Math 在二维复数矩阵上进行 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)
数学实验室:
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 结果根据输入矩阵大小进行缩放!
【问题讨论】:
-
您的 AForge 看起来不正确。 “复合体”由实数和虚数组成。所以 (Complex)1 只包含一个值而不是两个。
-
@jdweng(Complex)1 进行转换,结果包含虚值和实值
-
您的数组错误。你得到两个复数而不是一个。请参阅:aforgenet.com/framework/docs/html/…
-
@jdweng (Complex)1 表示新的 Complex(1,0).. 是一回事..
-
不,不,不! { { (复数)(1,0), (复数)(2,0) }, { (复数)(3,0), (复数)(4,0) }, { (复数)(5,0) , (复数) (6,0) }, { (复数)(7,0), (复数)(8,0) } };