当前位置:编程学习 > C/C++ >>

经典算法研究系列:十、从头到尾彻底理解傅里叶变换算法、下

作者:July、dznlong   二零一一年二月二十二日

推荐阅读:The Scientist and Engineers Guide to Digital Signal Processing<,By Steven W. Smith, Ph.D。此书地址:http://www.dspguide.com/pdfbook.htm
------------
从头到尾彻底理解傅里叶变换算法、上
前言
第一部分、  DFT
第一章、傅立叶变换的由来
第二章、实数形式离散傅立叶变换(Real DFT)

从头到尾彻底理解傅里叶变换算法、下
第三章、复数
第四章、复数形式离散傅立叶变换


   前期回顾,在上一篇:html" target=_blank>十、从头到尾彻底理解傅里叶变换算法、上里,我们讲了傅立叶变换的由来、和实数形式离散傅立叶变换(Real DFT)俩个问题,
本文接上文,着重讲下复数、和复数形式离散傅立叶变换等俩个问题。

 

第三章、复数

        复数扩展了我们一般所能理解的数的概念,复数包含了实数和虚数两部分,利用复数的形式可以把由两个变量表示的表达式变成由一个变量(复变量)来表达,使得处理起来更加自然和方便。
        我们知道傅立叶变换的结果是由两部分组成的,使用复数形式可以缩短变换表达式,使得我们可以单独处理一个变量(这个在后面的描述中我们就可以更加确切地知道),而且快速傅立叶变换正是基于复数形式的,所以几乎所有描述的傅立叶变换形式都是复数的形式。
       但是复数的概念超过了我们日常生活中所能理解的概念,要理解复数是较难的,所以我们在理解复数傅立叶变换之前,先来专门复习一下有关复数的知识,这对后面的理解非常重要。
 
一、 复数的提出
 
      在此,先让我们看一个物理实验:把一个球从某点向上抛出,然后根据初速度和时间来计算球所在高度,这个方法可以根据下面的式子计算得出:

\

其中h表示高度,g表示重力加速度(9.8m/s2),v表示初速度,t表示时间。现在反过来,假如知道了高度,要求计算到这个高度所需要的时间,这时我们又可以通过下式来计算:

\              
      经过计算我们可以知道,当高度是3米时,有两个时间点到达该高度:球向上运动时的时间是0.38秒,球向下运动时的时间是1.62秒。但是如果高度等于10时,结果又是什么呢?根据上面的式子可以发现存在对负数进行开平方运算,我们知道这肯定是不现实的。
      第一次使用这个不一般的式子的人是意大利数学家Girolamo Cardano(1501-1576),两个世纪后,德国伟大数学家Carl Friedrich Gause(1777-1855)提出了复数的概念,为后来的应用铺平了道路,他对复数进行这样表示:复数由实数(real)和虚数(imaginary)两部分组成,虚数中的根号负1用i来表示(在这里我们用j来表示,因为i在电力学中表示电流的意思)。
 
       我们可以把横坐标表示成实数,纵坐标表示成虚数,则坐标中的每个点的向量就可以用复数来表示,如下图:
       \        
       上图中的ABC三个向量可以表示成如下的式子:
 
            A = 2 + 6j
            B = -4 – 1.5j
            C = 3 – 7j
 
       这样子来表达方便之处在于运用一个符号就能把两个原来难以联系起来的数组合起来了,不方便的是我们要分辨哪个是实数和哪个是虚数,我们一般是用Re( )和Im( )来表示实数和虚数两部分,如:
 
            Re A = 2      Im A = 6
            Re B = -4     Im B = -1.5
            Re C = 3      Im C = -7 
 
       复数之间也可以进行加减乘除运算:
\            
  
       这里有个特殊的地方是j2等于-1,上面第四个式子的计算方法是把分子和分母同时乘以c – dj,这样就可消去分母中的j了。
 
       复数也符合代数运算中的交换律、结合律、分配律:
 
              A B = B A
              (A + B) + C = A + (B + C)
              A(B + C) = AB + AC
 
 
二、 复数的极坐标表示形式
 
       前面提到的是运用直角坐标来表示复数,其实更为普遍应用的是极坐标的表示方法,如下图:

\
              
       上图中的M即是数量积(magnitude),表示从原点到坐标点的距离,θ是相位角(phase angle),表示从X轴正方向到某个向量的夹角,下面四个式子是计算方法:
\                     
     我们还可以通过下面的式子进行极坐标到直角坐标的转换:
 
             a + jb = M (cosθ + j sinθ)


     上面这个等式中左边是直角坐标表达式,右边是极坐标表达式。
 
     还有一个更为重要的等式——欧拉等式(欧拉,瑞士的著名数学家,Leonhard Euler,1707-1783):
             ejx = cos x + j sin x 
 
     这个等式可以从下面的级数变换中得到证明:

\

      上面中右边的两个式子分别是cos(x)和sin(x)的泰勒(Taylor)级数。
 

      这样子我们又可以把复数的表达式表示成指数的形式了:
 
             a + jb = M ejθ (这便是复数的两个表达式)
 
      指数形式是数字信号处理中数学方法的支柱,也许是因为用指数形式进行复数的乘除运算极为简单的缘故吧:

\

             
三、复数是数学分析中的一个工具
 
       为什么要使用复数呢?其实它只是个工具而已,就如钉子和锤子的关系,复数就象那锤子,作为一种使用的工具。我们把要解决的问题表达成复数的形式(因为有些问题用复数的形式进行运算更加方便),然后对复数进行运算,最后再转换回来得到我们所需要的结果。
 
       有两种方法使用复数,一种是用复数进行简单的替换,如前面所说的向量表达式方法和前一节中我们所讨论的实域DFT,另一

补充:软件开发 , C语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,