dsp低通滤波器设计实验之一:傅里叶变换

这其实是我的dsp课程的课程设计,老实说,一个学期的dsp课程并没有使我对dsp芯片增加了多少了解,更多的收获是终于知道之前看如天书的数字信号处理是用来干嘛的了,然而,这也并没有什么卵用,也丝毫没有减少我对傅里叶的恨意,哈哈,说说笑。

设计一个低通滤波器,这其实是一个很简单很简单的课程设计,甚至,还称不上课程设计,叫实验也不为过。我之所以想把它写出来,一是临近毕业,想把这之前做的一些有意思的东西分享一下,否则他们只能静静的躺在硬盘里慢慢被遗忘,被删掉。二,当然是造福各位还“挣扎”在天堂里的“莘莘学子”啦。插一句,最近在实习,才发现,学校才真的是最接近天堂的地方,还在天堂里的请好好珍惜。其实我只是想让后来的师弟师妹们初步了解一下像傅里叶变换是怎么在实际中应用的,而不只是背几个不知何解的公式,想当初我就是背一下频域相乘等同于时域卷积就去考信号与系统了。。。。,第一次尝试去写东西,写不好莫怪。

首先,奉上大神杰作http://zhuanlan.zhihu.com/wille/19763358,好了,看完还不懂就去打死作者吧,与我无关,拜拜。。。。

老实说,要是早一点看到大神的杰作,可能就不用云里雾里的就去考试了,总的来说,我们之所以要用傅里叶变换,一般信号在时域里面都是由几个不同频率和幅度的正弦波合成的,波形杂乱无章,我们并不能对它进行直接的处理,而经过傅里叶变换转到频域里面就能直观地看到每个正弦波的频率,在频域里面对各个频率成分进行处理,如删减某个频率,在经过反傅里叶变换就会得到我们想要的信号。要说一句的是,时域到频域,再由频域到时域只是人理解的一个过程,并不是说在dsp芯片中运行的程序就是先进行傅里叶变换,处理完再反变换的过程。频域和时域是两个不同的空间,反映的是同一个物体,在一个空间对这个物体进行处理自然在另一个空间也会看到它的变化,举个不恰当的例子,时域和频域就如一个人的身前和身后,在这个人身后胡一巴掌,你在前面看到 的不是胡一巴掌,对,你看到的是这个人吐了一口血。。。。。。而傅里叶变换就是这一巴掌和这一口血之间的联系。这样就可以很好的解释“频域相乘等同于时域卷积”这句话了,时域里面进行卷积运算要经过翻转,移位,相乘等,然而这一切在频域中就相当只进行了相乘运算。

废话不多说,上图,上图之前还是先奉上高手作品,http://www.cnblogs.com/BitArt/archive/2012/11/24/2786390.html ,这里面提到了数字信号处理的第一步,抽样,抽样的具体原理推导原谅我也说不清,只能说抽样在实际中就是常说的模/数转换,就是通过一块A/D芯片将模拟信号转化为一系列的数字量让DSP去处理,下图中的黄圈圈住的就是本实验用的A/D芯片TLC320AD50,

前面说过,傅里叶表明的是任何信号都是由不同频率和幅度的正弦波合成的,下面就来合成两个不同频率的正弦波信号,原谅我matlab临时学的,手痒用用。。。。

可以看到,频域图明确的表明我们的信号只有1000Hz频率分量,同样,一个4kHz的正弦波信号如下,

可以预见,如果把这两个频率分量的正弦波信号合成,它的频域是什么样子的,如下

 

就是这样,时域和频域之间还是有很多很有趣的联系的,有兴趣的可以关心一下,基本来说,傅里叶变换是很强大很有用处的,写这个更多是由于看了前面第一篇博文有感而写,至今从网上博文受益良多,有时候自己动手做做,虽然简单,但看到预期结果是还是很开心。

时间: 2024-10-22 21:41:28

dsp低通滤波器设计实验之一:傅里叶变换的相关文章

03-04面向对象设计原则_设计实验

设计实验 有 3 个开关:a b c 有 3 个电灯:x y z 要求实现: a 能控制 x b 能控制 x, y c 能 x 注意:1个灯泡可以被多个开关控制:1个开关可以同时控制多个灯泡 所谓"控制":当开关操作时,当前灯泡的状态发生翻转.亮->灭 或 灭->亮 import java.util.*; class Light { private boolean state; // 灯的状态.true: 亮 public String toString() { if(st

2017-2018-1 20155235 实验五 通讯协议设计 实验内容

2017-2018-1 20155235 实验五 通讯协议设计 实验内容 一.安装OpenSSL 二.通过混合密码系统进行防护 实验步骤 一.安装OpenSSL 在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623.html 中的作业 提交运行结果截图 在运行中出现了一些问题,会在下面的测试中遇到的问题详解 二.通过混合密码系统进行防护 在Ubuntu中实现对实验二中的"wc服务器"通过混合密码系统进行防护 提交测试截图) 实验流程 在虚

第二次课程设计实验

2019春第二次课程设计实验报告 一. 实验项目名称 贪吃蛇游戏 二. 实验项目功能描述 一个能由用户手动输入实现的用户操控一串字符数组移动达成相应条件改变字符数组的贪吃蛇游戏 三. 项目模块结构介绍 四. 实现界面展示 五. 代码托管链接 https://gitee.com/llf1202/flappy-1/blob/master/tcs.cpp 六. 实验总结 问题:游戏运行时,出现sleep(2000)函数没有定义 解决:开始我是怀疑我的代码打错了,某个函数打错了,反复对照书上的代码还是没

第二次课程设计实验报告

2019春第二次课程设计实验报告 一.实验项目名称 贪吃蛇小游戏 二.实验项目功能描述 玩家通过键盘控制蛇在地图上寻找食物,蛇吃下食物,可以加分,碰到四壁或者自己游戏结束. 三.项目模块结构介绍 程序关键在于表示蛇的图形及蛇的移动.用一个小圆点来表示蛇的一节身体,身体每长一节,增加一个圆点,蛇头用四节来表示.移动时必须从蛇头开始,所以蛇不能向相反的大反向移动,如果不按任意键,蛇自行在当前方向上前移,如果按与蛇方向相反的方向键,此游戏就会暂停,再按向前的方向键才能继续游戏,但按下有效方向键后,蛇头

2109春第一次课程设计实验报告

2019春第一次课程设计实验报告 一.实验项目名称: 飞机游戏的编写 二.实验项目功能描述: 这个实验主要是实现游戏的正常运行,实现控制飞机的移动功能,增加其实用度, 同时还实现发射子弹和出现敌机的操作,通过发射子弹,击败静止的或者移动的 敌机,最终实现通关或者死亡: 三.项目模块结构介绍: 第一步:代码重构,实现控制飞机移动的功能. 第二步:新式子弹,初始化子弹在飞机的正上方,子弹发射后自动向上移动: 第三步:静止的敌机,增加静止的敌机: 第四步:敌机移动,让敌机自动向下移动: 第五步:击中敌

2019年春第一次课程设计实验报告

2019春第一次课程设计实验报告 一.项目实验名称:飞机游戏 二.实验功能描述:操作者可以通过WASD来控制飞机移动,按下空格键飞机则可以发射子弹,子弹击中敌机则敌机消失,敌机消失后则可以得分并且刷新敌机位置. 三.项目模块介绍: 游戏最终代码: #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <windows.h> // 全局变量 int position_x,posit

2019春第3次课程设计实验安排

2019春第3次课程设计实验安排 一.实时钟表 二.实验功能描述: 由秒针的转动,带动分针的转动,以及再带着时针的转动.同时我们的钟表是可以与我们准确的时间相联系,也就是说这是一个比较准确的时间点,以及是非常简便的,当然秒针转一圈,分针动一下,以及分针转一圈,时针动一下,采用的是用角度来进行计算的,以及结束一圈的结束点以及起始点,都是采用的角度的结算. 三.项目介绍 1.绘制静态秒针 秒针的转动 根据实际时间转动 4.添加时针和分针 5.添加表盘刻度 四.实现界面展示 五.代码托管链接 http

2019年春第三次课程设计实验报告

··2019年春第三次课程设计实验报告 一.实验项目名称 反弹球小游戏多球反弹动画 二.实验项目功能描述 能利用数组储存多个小球的速度和坐标,再利用循环语句实现球与球之间的碰撞和球与墙壁之间的碰撞 三.项目模块结构介绍 利用主函数定义全局变量,在使用while语句进行循环,再用批量绘制函数和延时函数 四.实现界面展现 五.代码托管链接 https://gitee.com/zhangwei666666/c_language_game 六.实验总结 这周第一次使用vs软件用起来有点不适应,边百度边摸

2019第三次课程设计实验报告

2019第三次课程设计实验报告 一.实验项目名称 反弹球游戏 二.实验项目功能描述 游戏用户通过控制挡板来反弹小球最后消除砖块,有的砖块可能会藏有金币,用户通过消除砖块接住金币来获得游戏分数,消除所有砖块,则游戏结束. 三.项目模块结构介绍 四.实现界面展示 五.代码托管链接 https://gitee.com/hxy2017826779/huang_hahas_warehouse/blob/master/%E5%8F%8D%E5%BC%B9%E7%90%83.cpp 六.实验总结 自己明显的感