首页 > 代码库 > 转载--理解数字信号处理的三把钥匙

转载--理解数字信号处理的三把钥匙

原址

        在数字信号处理大厦中,有许许多多的小房间,有的门上写着“DFT”,有的门上写着“滤波”,有的门上写着“卷积”,有的门上写着“相关”,等等。每一个房间都藏着知识的秘密,每一个房间都要用属于自己的钥匙才能打开。但就整体上来说,理解数字信号处理有三把“万能”的钥匙:时域与频域的相互切换、向量和MATLAB软件。充分应用这三把钥匙,能为深入理解数字信号处理提供有力的帮助。

1、时域与频域的相互切换

      深入理解数字信号处理的第一把钥匙是时域与频域的相互切换。时域与频域之间联系的桥梁是傅立叶变换。学过高等数学的人都知道,傅立叶分析是数学分析的一个重要分支。傅立叶变换也是信号处理最重要的理论基础之一,因而也有人说信号处理其实就是数学分析的一个分支,这点更因绝大多数的信号处理图书充斥着数学公式而得到强化。诚然,数学公式的严密性是信号处理的理论基础,但正是信号或系统在频域所具有的明确的物理意义使信号处理与数学分析有所区别,正是要不断在时域与频域来回切换导致了信号处理与数学分析成为两个不同的学科。当给定一个信号的时候,信号处理专家的做法是先在时域观察其特征,再到频域观察其特征,或者更高级的是在时-频联合域上观察信号的特征。在信号处理的过程中,在频域上滤波之后要观察时域的变化,在时域处理后要观察频域的影响。而对一个数学专家来说,其思路可能就是建立模型,提出猜想,然后再推导证明。

对于很多信号处理的初学者来说,经过一段时间的学习后能够从数学公式上理解信号和系统,但却很少从物理意义的角度上去理解信号和系统,这导致了对数字信号处理普遍的畏难情绪。还有很多人能够从时域分析信号和系统,也能够从频域分析信号和系统,但却不易在时域与频域之间来回切换,而是往往将时域与频域孤立开来,从而不能更深地理解信号和系统。更多地在时域与频域之间来回切换,理解其中的物理意义,可以说是数字信号处理的一种基本思维方式。

2、向量

        向量,或者说矢量,只不过是一根带有箭头的线段,如图1(a)所示。它看起来非常简单,但这种简单的工具却可以让我们抛开繁杂的数学公式,直观地理解数字信号处理中许多看似深奥的概念。

技术分享    

图1  复正弦信号的向量表示及其加法运算

        复正弦信号在信号处理中有着特殊的作用。对于幅度为A,频率为f,采样率为fs,初始相位为fai的复正弦信号s(n):

                                   s(n) = A*exp(j*2pi*f/fs*n+fai)

可以非常直观方便地用一个旋转的向量来表示,如图1(a)所示。其中向量的长度表示了信号的幅度,旋转的速度表示了信号的频率。

       相加是最基本的运算。对于两个频率相同但初始相位不同的复正弦信号的相加,如果用数学公式的话,要先用欧拉公式展开,然后再进行三角函数的运算,比较麻烦。但是利用向量图,则只需要以两个向量为边,做一个平行四边形,所得的对角线即是相加的结果,如图1(b)所示,非常直观。

       向量虽然也是一种数学工具,但这种工具简单而又直观,能帮助我们重新发现往往被数学公式的浪潮所淹没的信号处理的实质,是深入理解数字信号处理的最有力的工具之一。

3、MATLAB软件

      MATLAB是美国Mathworks公司开发的一种面向科学与工程数值计算的计算机软件,它编程简单,易学易懂,号称是“草稿纸”式的计算机语言。而且这种软件的图形显示能力非常强大,非常适合抽象概念的理解。MATLAB最初只是教学辅助软件,但由于强大的功能和一系列显著的特点,其应用早已超出了辅助教学,已经广泛用于实际的科学研究和工程应用中。在信号处理方面,MATLAB也已经成为国际信号处理界公认的数值计算和算法开发的标准平台。

      因为其编程简单,初学者很快就能上手,将信号处理的基本概念和方法转化为实际的代码,在交互式的学习实践中提高对基本概念的理解。虽然在MATLAB中,本书将要涉及的数字信号处理的基本内容几乎都可以直接调用现成的函数,但初学者在理解概念的过程中最好是自己编写代码而不是直接调用函数,这样的理解才能更深入。因为其计算能力强大,对一些要用到比较深奥复杂数学公式的信号处理方法,比如滤波器的系数计算及有限字长影响的分析,用MATAB能够简单方便地得到所需的结果,可以大幅提高效率。因其图形显示功能丰富,很多概念都可以方便地用具体的图形来演示,可以增强直观的理解。

        MATLAB虽然功能强大,是理解和应用数字信号处理的非常有效的工具。但如果有人据此产生“有了MATLAB再也无需深入了解基本的概念和方法”的观念,就可能会走入歧途。一方面,如果没有对基本概念的理解和把握,使用MATLAB时可能会连参数是什么含义都不知道;另一方面,如果没有对概念的理解和把握,更无法利用MATLAB这个工具来解决实际的问题。

        最后再强调一下,MATLAB既不能告诉我们信号处理基本概念和方法的物理意义,也无法告诉我们面对具体问题时的解决思路,它终究只是一种工具软件,只有将基本概念的理解与MATLAB的实现联系起来,相互印证,才能使MATLAB在理解和应用数字信号处理中真正起到“万能”钥匙的作用。

转载--理解数字信号处理的三把钥匙