数字信号处理.txt
DSP课程学习心得
对于数字信号处理课程最初的料想是在学长和以前的任课老师那里听来的,据说这门课是跟随着信号系统的步伐,而且难度比较的大。
经过一个学期的学习,我发觉前人所说的并不全然正确。
应该说经过了大一大二的学习,认为大学基础的课程很多都是建立在数学之上的,特别是大二下学习的信号系统课程,其主体就是傅里叶变换Z变换,以及微分方程和差分方程的计算。如果一定要说有和实际的联系得话,那么也就是调制和解调的一些内容了,但是即使是这些内容也是建立在数学的模型与图像上的,离开实际还很远,对于很多实际中可能出现的状况没有完善的模型去解释,只是一些模糊的概念罢了。
而至于滤波器就更加简单,只是根据频域的图像告诉我们,可以通过相乘得到这样的一部分我们所需要的频段。
对于连续型号我们可以很简单的从图像中看出来,那么数字信号呢?我们知道现实中模拟信号的传输是很麻烦的,而我们现在广泛采取的就是数字信号,那么同样的问题数字信号也是怎么解决的吗?
答案是显然的。那么既然不一样,我们可以做出数/模——模/数之间的转换是不是就可以了?转换之后,会不会添加或者减少了一些东西呢?
数字滤波器到底是怎么做出来的呢?实际的滤波器肯定不可能就是一个门函数,那么物理可实现的滤波器又是怎么样设计出来的呢?
还有关于调制解调严格的相干条件,如果频率有出路该怎么办,如果是倍频或是半频又该怎么办呢?
因为牵涉到离散的问题,原来很清晰的连续函数不再完全适用,那么我们应该怎么在信号系统后承接好数字信号处理这门课呢?
应该说这些问题是我在信号系统之后一直想的,也是在学习数字信号处理之前应该思考的。
让我释然的是李老师在第一节课时对这门课程作解释时的一句话,我到现在仍然记忆犹新。她说:很多学生看到这么多公式就感到害怕,但实际上我们不是要求大家单纯的去算这些式子。我们不是数学课,我们的要求其实是希望大家能够理解这些式子背后的物理含义。很多式子从数学推理上学很难,但是用物理的方法很简单的一看就明白了。而我们这门课大家就要学会从物理模型的角度去思考,很多问题就很容易就理解了。
从物理模型的角度去理解记忆这些公式,这是我对老师话的总结。在后续的课程中我也是这么做的。
但是我对这门课的心得还要再加上两句话:
(1)      拓展从信号系统中学到的知识,比较它与这门课的异同。
(2)      从物理模型的角度去理解记忆这些公
式,或者是从自己的角度去理解,不要拘泥于老师和课本上的条条框框
(3)      重视matlab仿真实验,从图像中去加深理解。
对于这三句话我会在下面作解释。
首先,对于信号系统与数字信号处理的关系,只要是学过这两门课程的人都看的出来。我前面说过,在学习的开始就有人有意无意的提醒我这两门课程的关系。有先入为主的概念,几乎每个人在学习数字信号系统的时候都会有意无意的去比较这两门课程。
显然这是温故而知新,对这门课程是有帮助的。但是这种被动的比较,帮助很小,我们应该学会主动的去罗列他们的不同之处。比如说第三章Z 变换、Z 变换收敛域、Z 反变换、Z 变换的性质,虽然是离散的,在表示方式上与连续的有所不同,但是变换的实质是差不多的,所以很多性质往往可以与傅里叶变换性质一起记忆,甚至许多性质公式完全可以从傅里叶变换的性质中互推得到。又比如采样中,采样定
短时傅里叶变换matlab程序
理的原理是一样的,但是如连续时间信号的离散时间处理,或者离散时间信号的连续时间处理,将会导致一些不同,这归根结底在于离散信号与连续信号不同之处。
这些异同之处加以理解,甚至反过来,回头再看以前的课本,你会发现很多地方又加深了理解,以前的有些疑问也释然了。或许有人认为以前的课程已经结束了,过去的问题懂不懂无所谓。实际上,很多以前的东西是现在学习的基础,基础扎实了,在以后有可能就因为这个道理,触类旁通反而解决了后续的问题。
如此看来,不单单是信号系统,我们甚至可以与其他一些并行的课程一起理解,比如自动控制原理中的零极点图,和最小相位系统是一致的理论;通信原理中也有调制解调和编码的东西甚至滤波器的设计,虽然主要是考虑信噪比的计算,但是基本原理是一样的。
尽管这种比较可能对做题上没有什么很大的影响,但是了解整个过程,了解整个系统是怎么运作的就对整个系统由了深刻的理解。这样在物理模型层面上,就更明白这是为什么了。
这就为老师所说的,从物理模型的角度去理解记忆这些公式打下了基础。有很多章节,他的基础都是前几章的公式,或是正对后面章节实现的定义。刚开始看的时候,觉得没有道理,而且很简单的问题偏偏要用数学表达式去表示,很显然的推论,用数学语言描述之后就看不太明白了。
那么既然如此,我们也没必要一定要把那些数学表示方法背下来,完全可以通过其物理的现象去理解它。本来,你用什么语言去写,也不过是描述他罢了,没有必要舍本逐末,只要理解就好。比如全通系统,最小相位系统,线
性相位系统,你可以用幅度和相角把每个都表示出来,也完全可以把图像记住了,那么一切也都记住了。甚至如李老师上课说的,通过平面几何的方法,你可以得到和数学推理一样的结论,因为两者完全是一一对应的关系。你完全可以按照自己的理解来,只要言之有理,自圆其说就可以了。
如果你没有办法想出自己的方法,那么通过图像来理解是一种不错的选择。整门课程随时随地都充斥着各种图像,比起枯燥的数字,图像更具体的表达了它们的物理本质,也方便记忆。
如果有的地方,课本上没有给出图像,那么自己也可以动手自己画。Matlab仿真试验就是很好的工具。既然课程引进了它作为实验工具,那么说明它的确能给我们很多启示。那么熟练掌握它,并能够用它做实验就显得很重要了。
有很多人认为,实验可以在学期最后一下作掉,这样节约时间。时间是节约了,但他却忽视了这门精品课程设计实验的用意,那就是在理论学习之后,给你更加具体的印象。
FIR滤波器是怎么样的?IIR滤波器又是怎么样的巴特沃兹、汉宁窗、凯泽窗如果你对他们的认识不熟悉,那么自己造一个,然后通过各种信号数字信号学习心得:
转眼间在数字信号处理领域已经混了两年了,多多少少有一点体会,供大家评论:
1、数字信号是模拟信号的特殊情况!在实际应用,特别是对于接口部分,数字逻辑的准确性将受到怀疑,例如电磁干扰的问题会直接影响判决!另外数字系统中也存在资源与性能之间的博奕。
2、系统应是完整的!在理论上有输入部分,处理输分,输出部分;在物理上也相对应于各个端口以及处理器,当然算法可是归于处理部分的。
3、在数字算法的设计中一定要十分的注意仿真。如使用matlab,LabVIEW等工具,不仅仅可以辅助学习,还可以直观的评价算法的性能,当然可以充分的借鉴别人的优秀经验
4、重视数学模型与物理过程之间的对应。记得有人说过:物理过程要数学化,数学结果要物理化!其实数学就是沟通现实与理论之间的桥梁,把它们完美的结合起来
5、工欲善必先利其器!做为一个工程师就应该具有使用先进工具的能力!例如在滤波器的设计中使用matlab提供的图形化工具,可以非常轻松的达到设计要求。
6、外文资料的阅读能力!我认为老美写的书有的的确十分的经典,解决问题比较到位,同时也兼顾到了初学者的问题。
7、多去著名的论坛去转转!特别是大型的专业公司的技术支持,那里边的人员都是能解决实际问题的,并且你去购买他们产品时,也同时为得到此项服务付出了money.
特别的在MATL
AB中,卷积、FFT都是很方便的事情,你完全可以把两个系统卷积一下,然后看一下形状,记一下参数;或者变换一个系统,看它的幅度响应和冲激响应曲线是怎样的,这比你用笔去拼命积分,有可能还积不出要方便太多了。
以上只是我在学习这门课程中的一些心得,不一定适用其他人,特别是数学功底很扎实的人,有可能它们觉得数学表述很亲切,一看就懂啊……
不知道老师要我们写的心得是不是这个样子,姑且算是我对这门课的感想。衷心希望这门精品课程越办越好。
一个DSP开发者的感受
我是已经从事DSP开发有几年了,看到许多朋友对DSP的开发非常感兴取,我结合这几年对DSP的开发
写一写自己的感受,一家之言,欢迎指教。我上研究生的第一天起根据老板的安排就开始接触DSP,那时DSP开发在国内高校刚刚开始,一台DSP开发器接近一万还是ISA总线的,我从206开始240、2407A都作过产品,对5402、2812、5471在产品方案规划制定和论证时也研究过。由于方向所限对6X、8X系列没有接触。  我发现在国内无论在公司或高校许多地方为了加快开发周期往往把一个产品开发分为硬件和软件两个相对独立部分,由不同的人完成。这在具有一定技术和管理基础的公司,由总设计师统一规划协调,分任务并行完成的情况下是可行的,也是符合现代产品开发规律的。但是在高校人员的流动很大,研究生的有效科研时间很短、基础差(许多研究生起步时对电熔、电阻、三极管的分类和选型都很困难,我也是这样过来的)更不用说系统规划设计了,况且许多老板自己也不太懂,师兄有自己的任务,他们搞明白时也毕业了。在许多高校做DSP就是一个算法加到自己的主程序里,在板子上跑一下,基本达到效果就可以了,至于可靠性是次要的,产业化无从谈起,这已经算不错的了。其实我觉得一个系统的完成,系统的规划是最重要的,在规划时对硬件设计的知识和认识是决定性的,它可以让你知道什么是可行的,什么是不可行的,当你同时具有软件设计能力时,就可以合理的分配系统功能,完成使用VHDL进行系统行为描述-—系统功能划分—— 系统子结构设计这样的自顶向下的设计规划流程,成为系统设计专家、项目经理,否则只是硬件工程师、软件工程师。无论作51、196、还是DSP都是这样。  下面分别谈谈我对硬件和软件设计的感受 硬件设计是系统设计的关键,国内和国外产品的差距往往是硬件设计水平高低决定的,任何软件设计思想没有可靠的物理载体都是空中楼阁,纸上谈兵。学校的研究生很多都想避开硬件设计,对于一个全新的设计与其说不
屑不如说不敢。试想一下烧几个片子的压力要比跑飞几段程序的压力大的多,尤其是功率器件,一旦烧掉,弄不好火光冲天,人的自信都没了。况且改一次板周期长,经费高,还不知行不行。其实在国外实力一般的公司也是尽量避免硬件的更新设计,产品一旦定型往往通过软件升级,这是公司的发展策略,对个人而言物以希为贵,培养一个硬件设计师往往要比软件设计师时间长花费多。在设计dsp硬件时,开始设计最小系统板,系统按功能分板设计调试,注意分板电路的稳定性可能不如整板电路,要多加入抗干扰环节,分板间的引线包括电源线地线要短,尽量在10公分以内,实在不行加入光耦隔离、采用隔离电源。切记电源线、地线的干扰远比信号干扰对系统的危害大得多,又常常被人忽视。电路板工作正常的先决条件就是电源正常!当分板电路正常后再更居情况设计整板电路。在调试时发现的问题一定要到原因解决,即使是飞线,割线,不要寄希望于下一板改了再看,除非原理性错误。每一个功能环节多准备几套方案。  DSP的选型要根据系统功能而定,2000是一个功能比较全的控制器,但运算性能相对低,但目前大部分控制类、家电类包括中低层次的工业总线通信产品足够了,281X不错但太贵,而且开发技术不成熟。54XX更像一个协处理器,其实高端产品5471就很好,功能完*,但BGA封装对产品的开发有一定难度。如果没有从事过嵌入式系统开发的朋友其实可以从51看起,许多思想是共通的,51很经典没有哪一款微处理器像51那样使用持久和普遍。在硬件设计时更多的精力放在外围电路设计上,外围电路设计的灵活性要比DSP本身高得多,难度大得多。建议多考虑CPLD。  软件设计上,着眼点不要仅局限于某种算法和控制策略,而是软件系统框架的制定,即操作系统的选择和实现,算法和控制策略只是其中技巧性很强的子程序和子程序间参数相互关系,建议设计软件时能具有操作系统、数据结构和
编译原理方面的知识,特别是使用C。  对DSP的内部硬件结构一定要掌握,特别是中断结构和流程、流水线操作,不然飞都不知道怎么飞的。在语言选择上我当时是这么给自己规定的先编20个左右的汇编程序,每个代码量超过4K,使用语句范围覆盖全部语句的60%-70%,在此基础上使用C。现在发现用C构建程序的主体框架(操作系统)比较快而其不容易出错,(我现在正在用ASM根据UCOSII的思想重写自己的操作系统)但对系统实时性影响比较大的运算算法一般采用MATLAB——C——ASM的办法仿真调试优化,这里的优化不单单是利用优化器优化,而是根据
数据的特点改变运算方法,以除法为例C里的/号其实掩盖了许多技巧,当除数为常数时就可以放大倒数移位相乘移位的办法进行,精度高速度快。这些办法只有掌握了ASM语言并用ASM语言思考才会熟练应用。另外我想告诉一些作算法特别是控制算法的朋友,千万不要随意评判一个算法的优劣,在程序中程序和代码优化的程度往往影响了控制效果好坏,而不是算法本身的思想。其实在实际中往往PID甚至PI、PD就够了,神经元、模糊、小波适用于研究和写论文,模糊在实际中用的多一点,主要是小日本用的比较成熟,我再恨日本人,这点也服气,小日本就是滑,许多物理现象搞不透,就用这法,还管用,题外话。  最后我想说的是,当我们面对市场要求时,产品往往考虑的是可靠性、性能、价格而不是你用的什么芯片,在满足性能的基础上结构越简单就越可靠,芯片越通用价格就越低,能用51就不用196,能用2407就不用2812,除非把芯片本身作买点利用高成本赢取高利润。无论2000还是5000、6000系列都有市场前景,关键是要做深做透获取知识的方法、处理项目的能力是相通的,具体的说就是
不要把目光盯在做硬件还是做软件上,用ASM还是C,要勤动手打好基础,提高自己对系统总体设计的能力,从系统的眼光看问题。为什么都是做DSP的有的毕业拿3000,有的5000、8000,除了运气和关系外,重要的是你对事物的认识深度和高度。我一直都记住这句话:有前途的人做什么都有前途,没前途的人做什么都没前途

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。