Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 二维离散傅里叶变换的复杂性_C#_Complexity Theory_Fft - Fatal编程技术网

C# 二维离散傅里叶变换的复杂性

C# 二维离散傅里叶变换的复杂性,c#,complexity-theory,fft,C#,Complexity Theory,Fft,我有一个关于二维傅里叶变换的问题。我目前正在理解这背后的数学原理,有一点我不明白。就我而言,DFT的复杂性是O(N*N)。如果我看一下以下算法: 我不明白它是怎么工作的。我们要对变换图像中的每个像素进行计算吗 示例 我们有一个2*2的图像 对于这幅图像中的每个像素,我们将进行DFT F(x,y) 我将创建一个新图像,每个像素都是相应复数值的大小 是这样的,还是我遗漏了什么?因为在我看来,它的复杂度是O(N^4)这个方程的意思是“求出像素(u,v)处的F值,求值(右边的公式)。”所以,要得到整个

我有一个关于二维傅里叶变换的问题。我目前正在理解这背后的数学原理,有一点我不明白。就我而言,DFT的复杂性是
O(N*N)
。如果我看一下以下算法:

我不明白它是怎么工作的。我们要对变换图像中的每个像素进行计算吗

示例

  • 我们有一个2*2的图像
  • 对于这幅图像中的每个像素,我们将进行DFT F(x,y)
  • 我将创建一个新图像,每个像素都是相应复数值的大小
  • 是这样的,还是我遗漏了什么?因为在我看来,它的复杂度是O(N^4)

    这个方程的意思是“求出像素(u,v)处的F值,求值(右边的公式)。”所以,要得到整个变换图像,就要对变换图像中的每个像素求值

    要计算DFT,使用公式,需要对每个输入值和每个输出值进行O(1)计算。(对于某些类型的数据,还有其他更快的算法。)在2D DFT中,该算法的复杂性为O((M*N)^2),因为输入像素数为M*N,而输出像素数也为M*N


    编辑:通过在单独的步骤中变换行和列,可以以O(NM^2+MN^2)为单位计算二维矩阵DFT。算法在这里:

    和C#的相关性?我想添加这个可能会很好,因为我不知道函数式编程语言是否会对这个计算有不同的处理方式。啊,我明白了,谢谢!不过,在开始编程之前,我还有一个简短的问题。你现在知道(ux/M+vy/N)的确切意思了吗?根据()的说法,2D DFT的复杂度是O(N^3)@RobS,我在描述给定DFT算法的复杂度。您链接的算法确实是渐进更快的。我把它加到了答案上。