傅里叶变换学习心得体会

  • 格式:doc
  • 大小:42.03 KB
  • 文档页数:21

傅里叶变换学习心得体会篇一:《随机数字信号处理》学习心得体会随机数字信号处理是由多种学科知识交叉渗透形成的,在通信、雷达、语音处理、图象处理、声学、地震学、地质勘探、气象学、遥感、生物医学工程、核工程、航天工程等领域中都离不开随机数字信号处理。

随着计算机技术的进步,随机数字信号处理技术得到飞速发展。

本门课主要研究了随机数字信号处理的两个主要问题:滤波器设计和频谱分析。

在数字信号处理中,滤波技术占有极其重要的地位。

数字滤波是语音和图像处理、模式识别、频谱分析等应用中的一个基本处理算法。

但在许多应用场合,常常要处理一些无法预知的信号、噪声或时变信号,如果采用具有固定滤波系数的数字滤波器则无法实现最优滤波。

在这种情况下,必须设计自适应滤波器,以使得滤波器的动态特性随着信号和噪声的变化而变化,以达到最优的滤波效果。

自适应滤波器(adaptivefilter)是近几十年来发展起来的关于信号处理方法和技术的滤波器,其设计方法对滤波器的性能影响很大。

自适应滤波器是相对固定滤波器而言的,它是一种能够自动调整本身参数的特殊维纳滤波器。

自适应滤波算法的研究是自适应信号处理中最为活跃的研究课题之一,其中,两种最基本的线性滤波算法为:最小均方误差(lms)算法和最小二乘(rls)算法,由于lms算法具有初始收敛速度较慢、执行稳定性差等缺点,本门课着重介绍了rls算法。

rls算法的初始收敛速度比lms算法快一个数量级,执行稳定性好。

谱分析是随机数字信号处理另一重要内容,它在频域中研究信号的某些特性如幅值、能量或功率等随频率的分布。

对通常的非时限信号做频谱分析,只能通过对其截取所获得的有限长度的样本来做计算,其结果是对其真实谱的近似即谱估计。

现代谱估计算法除模型参量法之外,人们还提出了其它一些方法,如capon最大似然谱估计算法、pisarenk谐波分解法、music算法、esprit算法等利用矩阵的特征分解来实现的谱估计方法。

在实际的谱估计过程中,无论是从样本数据出发(直接法),或是由样本的自协方差函数出发(间接法),窗函数的引入都是不可避免的,因为数据样本的简单截取本身就意味着通过了矩形窗。

窗效应在谱分析或谱估计中的影响表现在降低谱的频率分辨力和产生能量的泄漏。

本门课介绍了短时傅里叶变换以及由此引申出的一系列谱分析方法,并经验证得到了很好的效果。

综上所述,为我对本门课的理解和认知。

通过本门课的学习,使我对随机数字信号处理的技术和方法有了进一步的了解,加深了对基本理论和概念的领悟程度,课程所涉及到的很多算法和思想对我个人的研究方向有很大的启发,我将继续钻研相关理论和算法,争取尽早与科研实际相结合,实现学有所用。

最后,感谢老师孜孜不倦的讲解,为我们引入新的思想,帮助我们更快的成长。

篇二:算法学习心得班级:物联网1201姓名:刘潇学号:1030612129一、实验内容:这学期的算法与设计课,老师布置了这四个问题,分别是货郎担问题,动态生成二维数组,对话框下拉列表,排序问题。

二、学习掌握:基本程序描述:(1)货郎担问题:货郎担问题属于易于描述但难于解决的著名难题之一,至今世界上还有不少人在研究它。

货郎担问题要从图g的所有周游路线中求取具有最小成本的周游路线,而由始点出发的周游路线一共有(n一1)!条,即等于除始结点外的n一1个结点的排列数,因此货郎担问题是一个排列问题。

货郎担的程序实现了利用穷举法解决货郎担问题,可以在城市个数和各地费用给定的情况下利用穷举法逐一计算出每一条路线的费用,并从中选出费用最小的路线。

从而求出问题的解(2)费用矩阵:费用矩阵的主要内容是动态生成二维数组。

首先由键盘输入自然数,费用矩阵的元素由随机数产生,并取整,把生成的矩阵存放在二维数组中,最后把矩阵内容输出到文件和屏幕上。

它采用分支界限法,分支限界法的基本思想是对包含具有约束条件的最优化问题的所有可行解的解(数目有限)空间进行搜索。

该算法在具体执行时,把全部可行的解空间不断分割为越来越小的子集,并为每个子集内的解计算一个下界或上界。

动态生成二维n*n的数组程序利用指针表示数组的行和列,并逐一分配空间,在输入n的数值后,系统自动分配空间,生成n*n的数组,并产生随机数填充数组,最后将结果输入到指定文件中。

三.疑问与总结:货郎担的问题,我认为穷举法相对比而言是比较初级的方法,费时耗力,适合在练习时选用,但是在实际问题中不建议采用。

克鲁斯卡尔或者普里姆算法求取最小生成树的方法来解决货郎担的问题是更适合现实解决问题的。

我认为程序可以用switch函数来将函数分成几个部分更人性化,比如分为解决问题的的选项,输出结果选项,退出程序选项等。

再有就是费用矩阵的值可以从文件中读取,而结果也可以直接放在指定文件中,这样在实际应用中比较广泛。

动态生成二维数组的程序我认为如果按照规范性,我的方法是中规中矩的,毕竟再向下延伸,生成三维的数组,需要三层的指针来实现。

但是就程序的简化程度和计算机处理时间来说,我认为这样双层指针的算法有些太占用内存,毕竟要给行和列各分配n个空间。

我通过与同学的交流,我发现可以用1位数组来实现二维的n*n的数组。

首先分配n*n的空间,然后通过循环在一行的数据达到n时自动换行。

这样程序得到了一定的简化,并且减少了一定的内存使用。

我认为这种方法是比较贴合实际的。

四.心得体会在计算机软件专业中,算法分析与设计是一门非常重要的课程,很多人为它如痴如醉。

很多问题的解决,程序的编写都要依赖它,在软件还是面向过程的阶段,就有程序=算法+数据结构这个公式。

算法的学习对于培养一个人的逻辑思维能力是有极大帮助的,它可以培养我们养成思考分析问题,解决问题的能力。

如果一个算法有缺陷,或不适合某个问题,执行这个算法将不会解决这个问题。

不同的算法可能用不同的时间、空间或效率来完成同样的任务。

一个算法的优劣可以用空间复杂性和时间复杂度来衡量。

算法可以使用自然语言、伪代码、流程图等多种不同的方法来描述。

计算机系统中的操作系统、语言编译系统、数据库管理系统以及各种各样的计算机应用系统中的软件,都必须使用具体的算法来实现。

算法设计与分析是计算机科学与技术的一个核心问题。

因此,学习算法无疑会增强自己的竞争力,提高自己的修为,为自己增彩。

篇二:算算法学习心得:算法这个词是在我在大学第一次c语言课上听到的,当时老师讲的是程序=算法+数据结构,算法是一个程序的灵魂。

当时我什么也不懂,不知道什么叫数据结构,什么叫算法,它们是干什么的我也不明白。

然而经历了大学四年的学习,现在的我对算法有了一个较为清晰的认识,对于它的作用也有了深刻的体会。

所谓算法简单来说就是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,也就是说算法告诉计算机怎么做,以此来解决问题。

同一个问题存在多种算法来解决它,但是这些算法存在着优劣之分,好的算法速度快,效率高,占用空间小,差的算法不仅复杂难懂,而且效率低,对机器要求还高,当然,有时候算法之间存在一种互补关系,有些算法效率高,节省时间,但浪费空间,另外一些算法可能速度上慢些,但是空间比较节约,这时候我们就应该根据实际要求,和具体情况来采取相应的算法来解决问题。

这学期算法课上我们主要讲了七部分内容.第一章主要讲的是算法的基本概念,算法时间复杂度分析,算法的渐近时间复杂度等内容。

因为算法之间的比较就是通过时间复杂度和空间复杂度来来比较的,第一章的主要目的就是让我们学会去分析一个算法的复杂度,以后就可以通过对复杂度的分析来评价算法的好坏。

第二章讲的是分治法,任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。

问题的规模越小,越容易直接求解,解题所需的计算时间也越少,分治法的设计思想就是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。

在这一章中我们讲到了寻找第k个元素,矩阵相乘,寻找最近点对等几个使用分治法的经典例子,最后还将讲到了傅里叶变换的问题。

以前我们学到的归并排序,二分搜索其实也是基于分治法思想的。

能采用分治法来解决的问题通常有如下几个特征:1)该问题的规模缩小到一定的程度就可以容易地解决2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。

3)利用该问题分解出的子问题的解可以合并为该问题的解;4)该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子子问题。

在用分治法解决实际问题时,我们疑问究竟各个子问题的规模应该怎样才为适当?从大量实践中发现,在用分治法设计算法时,最好使子问题的规模大致相同。

换句话说,将一个问题分成大小相等的k个子问题的处理方法是行之有效的,这就是一种平衡的思想。

第三章主要讲动态规划问题。

这一章的内容我觉得是算法设计思想中最难,也最有趣的这部分。

什么叫动态规划,动态规划的思想是什么?动态规划采用自顶向下的方式分析问题,自底向上的方式递推求值,将待求解的问题分解成若干个子问题,先求解子问题,并把子问题的解存储起来以便以后用来计算所需要求的解。

简言之,动态规划的基本思想就是把全局的问题化为局部的问题,为了全局最优必须局部最优。

“多阶段决策问题是根据问题本身的特点,将其求解的过程划分为若干个相互独立又相互联系的阶段,在每一个阶段都需要做出决策,并且在一个阶段的决策确定以后再转移到下一个阶段,在每一阶段选取其最优决策,从而实现整个过程总体决策最优的目的”(引用)。

还记得期末考试中的最后一道关于任意给定一个数,从所给的牌中用最少的牌组成这个数,这个问题其实就可以用动态规划来解决。

本科期间,在算法课上老师在动态规划这一章不布置的一个作业跟这个题目类似,当时的题目是找钱问题,问题是这样描述的:有n种不同面值的硬币,各硬币面值存于数组t[1:n],现用这些面值的钱来找钱,编程计算找钱m的最少硬币数及各个面值。

分析如下:假设对于i=1...n-1,所需最少的硬币数count(i)已知,那么对于n,所需的硬币数为min(count(i)+count(n-i)),i=1...n-1;于是一个直观的方法是用递归计算。

但是,递归过程中,每次计算count(i),都会重复计算count(1)....count(i-1);这样时间复杂度就是o(n );我们可以从1开始记录下每个钱数所需的硬币枚数,避免重复计算,为了能够输出硬币序列,我们还需要记录下每次新加入的硬币。

下面给出用动态规划解决此问题的递推式:参数说明:当只用面值为t[1],t[2],?t[n]来找出钱j时,所用的硬币的最小个数记为c(i,j),则c(i,j)的递推方程为:运用这个递推式,我们可以从下往上记录各个j所需要的应兵书i,最后当j=m时,所对应的i就是我们要求的。

第四章讲的是集合算法,这一章的内容是我第一次接触,以前没有学过。