FIR滤波器的DSP设计 FFT的DSP实验
实验4 FIR数字滤波器的DSP编程实现-推荐下载

对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术通关,1系电过,力管根保线据护敷生高设产中技工资术艺料0不高试仅中卷可资配以料置解试技决卷术吊要是顶求指层,机配对组置电在不气进规设行范备继高进电中行保资空护料载高试与中卷带资问负料题荷试2下卷2,高总而中体且资配可料置保试时障卷,各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看度并22工且22作尽22下可22都能22可地护以缩1关正小于常故管工障路作高高;中中对资资于料料继试试电卷卷保破连护坏接进范管行围口整,处核或理对者高定对中值某资,些料审异试核常卷与高弯校中扁对资度图料固纸试定,卷盒编工位写况置复进.杂行保设自护备动层与处防装理腐置,跨高尤接中其地资要线料避弯试免曲卷错半调误径试高标方中高案资等,料,编试要5写、卷求重电保技要气护术设设装交备备置底4高调、动。中试电作管资高气,线料中课并敷3试资件且、设卷料中拒管技试试调绝路术验卷试动敷中方技作设包案术,技含以来术线及避槽系免、统不管启必架动要等方高多案中项;资方对料式整试,套卷为启突解动然决过停高程机中中。语高因文中此电资,气料电课试力件卷高中电中管气资壁设料薄备试、进卷接行保口调护不试装严工置等作调问并试题且技,进术合行,理过要利关求用运电管行力线高保敷中护设资装技料置术试做。卷到线技准缆术确敷指灵设导活原。。则对对:于于在调差分试动线过保盒程护处中装,高置当中高不资中同料资电试料压卷试回技卷路术调交问试叉题技时,术,作是应为指采调发用试电金人机属员一隔,变板需压进要器行在组隔事在开前发处掌生理握内;图部同纸故一资障线料时槽、,内设需,备要强制进电造行回厂外路家部须出电同具源时高高切中中断资资习料料题试试电卷卷源试切,验除线报从缆告而敷与采设相用完关高毕技中,术资要资料进料试行,卷检并主查且要和了保检解护测现装处场置理设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
DSP技术实验报告-实验3FIR滤波器设计与实现

电子科技大学电子工程学院标准实验报告(实验)课程名称DSP技术实验题目FIR滤波器设计与实现电子科技大学实验报告实验地点:科B453室实验时间:10月26日一、实验室名称:DSP技术实验室二、实验项目名称:FIR滤波器设计与实现三、实验学时:4四、实验目的:1.熟悉BF609开发板WL-BF609-EDU硬件平台。
2.熟悉CCES开发软件平台的使用,掌握CCES集成开发环境的基本操作和常用功能,掌握CCES工程的创建、程序编写、编译和调试。
3.掌握DSP中FIR滤波器设计、实现的方法。
五、实验内容:1.了解BF609开发板WL-BF609-EDU。
2.熟悉CCES集成开发环境的基本操作和常用功能。
3.学习实验指导书中的低通滤波器设计与实现,验证滤波效果。
4.独立设计、实现FIR高通滤波器,并验证滤波效果。
六、实验环境:1.预装开发环境Cross Core Embedded Studio 1.0.2的计算机。
2.BF609开发板一套。
3.ADDS HPUSB-ICE仿真器一套。
七、实验步骤:输入条件:1MHz的点频信号,峰值为1;10M的点频信号,峰值为0.5;采样时钟40MHz。
滤波器:17阶低通滤波器。
输出:保留10MHz 的点频信号,滤除1M 的点频信号。
1.用MATLAB 设计FIR 高通滤波器FIR 滤波器原理有M 个权系数(抽头)的FIR 滤波器,如下图所示。
滤波器的输入为随机过程()x n ,输出为1()()M i i y n w x n i -*==-∑其中,i w 表示横向滤波器的权系数。
......图M 抽头的FIR 滤波器定义输入信号向量和权向量分别为 ()[(),(1),(1)]T n x n x n x n M =--+x011[,,,]T M w w w -=w则输出可表示为 ()()()H T y n n n *==w x x w2.FIR 滤波器高通滤波器实现(学习实验指导书中的低通滤波实验,独立完成高通滤波的DSP 实现) 八、FIR 高通滤波器代码输入条件:1MHz的点频信号,峰值为1;10M的点频信号,峰值为0.5;采样时钟40MHz。
FIR滤波器设计和DSP实现

FIR滤波器设计和DSP实现FIR滤波器(Finite Impulse Response Filter)又称为有限脉冲响应滤波器,是一种数字滤波器,其脉冲响应为有限长度。
FIR滤波器具有稳定性、线性相位等优点,广泛应用于数字信号处理(DSP)中。
1.窗函数法:窗函数法是FIR滤波器设计中最简单、最常用的方法之一、设计步骤主要有:选择合适的窗函数(如矩形窗、汉宁窗、哈宁窗等);确定滤波器的截止频率和通带或阻带波动范围;根据窗函数的特性进行滤波器系数的计算。
窗函数法设计得到的滤波器具有较好的频域响应,并且易于实现。
2.频率采样法:频率采样法是通过对滤波器在频域中的理想特性进行采样,然后进行逆变换得到滤波器系数。
设计步骤主要有:确定理想滤波器的频率响应;进行频率采样,得到取样频率上的实际频率响应;对实际频率响应进行逆变换,得到滤波器系数。
频率采样法设计的滤波器可以满足设计要求,但是需要进行逆变换,计算复杂度较高。
3.最小二乘法:最小二乘法是通过求解最小化均方差的优化问题,得到最佳滤波器系数。
设计步骤主要有:建立最小二乘优化问题的数学模型;对数学模型进行求解,得到最佳滤波器系数。
最小二乘法能够得到较好的滤波器性能,并且不需要进行逆变换,计算复杂度相对较低。
1.将滤波器的系数存储在系数寄存器中;2.将输入信号与相应的系数进行乘法运算;3.将乘法运算的结果累加得到输出信号;4.将输入信号和系数向右移动一个位置;5.重复步骤2-4,直到滤波器输出满足要求。
DSP实现可以采用硬件方法,如使用专用的FPGA或ASIC实现滤波器的计算单元;也可以采用软件方法,在DSP芯片上运行相应的滤波算法代码。
对于较复杂的滤波器设计,可以使用专门的滤波器设计软件进行设计和实现。
综上所述,FIR滤波器的设计和实现是数字信号处理中的重要内容,不同的设计方法和实现方式可以根据具体需求选择。
设计一个合适的FIR 滤波器可以满足信号处理的要求,并且在DSP实现中能够提高系统的运算效率和性能。
DSP原理与应用实验5-FIR滤波器

课程名称DSP原理与应用实验序号实验5实验项目FIR滤波器实验地点实验学时实验类型指导教师实验员专业班级学号姓名年月日成绩:一、实验目的及要求1、掌握数字滤波器的设计过程;2、了解FIR 的原理和特性;3、熟悉设计FIR 数字滤波器的原理和方法。
4、对带有噪声的不同输入信号(正弦波、三角波)进行FIR 滤波,观看滤掉噪声后的波形。
二、实验原理与内容1、有限冲击响应数字滤波器( FIR)FIR 数字滤波器是一种非递归系统,其冲激响应h(n)是有限长序列,其差分方程表达式为:N 为FIR 滤波器的阶数。
在数字信号处理应用中往往需要设计线性相位的滤波器,FIR 滤波器在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位特性。
为了使滤波器满足线性相位条件,要求其单位脉冲响应h(n)为实序列,且满足偶对称或奇对称条件,即h(n)=h(N-1-n)或h(n)=-h(N-1-n)。
这样,当N 为偶数时,偶对称线性相位FIR 滤波器的差分方程表达式为由上可见,FIR 滤波器不断地对输入样本x(n)延时后,再做乘法累加算法,将滤波器结果y(n) 输出。
因此,FIR 实际上是一种乘法累加运算。
而对于线性相位FIR 而言,利用线性相位FIR 滤波器系数的对称特性,可以采用结构精简的FIR 结构将乘法器数目减少一半。
2、本实验中FIR 的算法公式三、实验软硬件环境SEED—DTK67实验箱,CCS软件,接口线Filter 实验,包含文件1. FIR_Filter.c:音频芯片各控制寄存器的初始化,采样程序,FIR_Filter 子程序。
2. FIR_function.c :滤波算法实现程序。
3. main.c: 实验的主程序,包含了系统初始化.4. linker.cmd:声明了系统的存储器配置与程序各段的连接关系。
5. DEC6437.gel:系统初始化程序四、实验过程(实验步骤、记录、数据、分析)1. 将DSP 仿真器与计算机连接好;2. 将DSP 仿真器的JTAG 插头与SEED-DEC6437 单元的J9 相连接;3. 打开SEED-DTK6437 的电源。
FIR 数字滤波器(DSP实验报告)

FIR 数字滤波器一、实验目的数字滤波的作用是滤除信号中某一部分频率分量。
信号经过滤波处理,就相当于信号频谱与滤波器的频率响应相乘的结果。
从时域来看,就是输入信号与滤波器的冲激响应作卷积和。
数字滤波器在各种领域由广泛的应用,例如数字音响、音乐和语音合成、躁声消除、数据压缩、频率合成、谐波消除、过载检测、相关检测等。
本实验主要学习数字滤波器的DSP 实现原理和C54X 编程技巧,并通过CCS 的图形显示工具观察输入/输出信号波形以及频谱的变化。
该实验应该安排在串口和定时器操作实验之后进行。
二、实验原理1) FIR滤波器的实现如果FIR 滤波器的冲激响应为h(0),h(1),...,h(N-1)。
X(n)表示滤波器在n 时刻的输入,则n时刻的输出为:y(n) = h(0)x(n) + h(1)x(n-1)+ ... + h(N-1)x[n-(N-1)]使用MAC或FIRS指令可以方便地实现上面的计算。
使用带MAC 指令的循环寻址模式实现FIR 滤波器,程序片段如下:(输入数据在AL 中,滤波结果在AH中)STM #1,AR0 ;AR0=1STM #N,BK ;BK=N,循环寻址BUFFER 大小为N STL A,*FIR_DATA_P+% ;更新滤波窗口中的采样数据RPTZ A,#(N-1) ;重复MAC指令N次,先将A清零MAC *FIR_DATA_P+0%,*FIR_COFF_P+0%,A ;完成滤波计算。
注意FIR滤波系数存放在;数据存储区另一种方法是利用C54x 系列芯片的提供的FIRS 指令来实现FIR 滤波器。
为一种有限单位冲激响应呈现对中心点对称的FIR 滤波器。
长度为N的线性相位FIR,使用带FIRS 指令的循环寻址模式实现FIR 滤波器,程序片段如下:(输入数据在AL 中,滤波结果在B 中) STM #1,AR0 ;AR0=1STM #(N/2),BK ;BK=N/2,循环寻址BUFFER大小为NMVDD *ar2, *ar3 ;更新Buffer2STL A, *ar2+% ;更新滤波窗口中的采样数据ADD *ar2+0% , *ar3+0% ;初始化ARPTZ B, #(N/2-1) ;重复FIRS指令N/2次,先将B清零FIRS *ar2+0%, *ar3+0%,filter_coff+N/2 ;完成滤波计算。
通用DSP实现FIR滤波器实验报告

N -1一、试验目的:1、了解 FIR 滤波器的 DSP 实现方法;2、了解用 FIR 滤波器实现模拟信号滤波的全过程;3、把握 FIR 滤波器直接型构造的实现方法。
二、试验原理:FIR 滤波器是有限长单位脉冲响应数字滤波器,其系统函数一般式为:H (z ) = ∑ h (n )z - nn =0FIR 滤波器的通用 DSP 实现法与前面介绍的 IIR 滤波器构造的实现方法类似, 用 FIR 滤波器对模拟信进展滤波的构造图所示。
数字滤波器对模拟信号滤波的原理图本试验中在以通用DSP(TMS320)为核心的DSP 平台上承受窗函数设计法分别设计了 50 阶的高通、低通、带通 FIR 滤波器,其幅频特性分别如以下图形所示:50)B d (ed u t i n ga M 0 -50 -100-1501000 2023 3000 4000 5000 6000 7000 8000 9000 10000Frequency (Hz))s e r g e d ( e s a h P-500 -1000 -1500-20231000 2023 3000 4000 5000 6000 7000 8000 9000 10000Frequency (Hz)输入 保护滤波器输出A/D FIR 滤波器 D/A低通滤波器的频响特性)s e es no ps eRe dut i nga M1.510.510000 1000 2023 3000 4000 5000 6000 7000 8000Hertz9000 10000r g e d( e s a h P -1000-2023-3000-40000 1000 2023 3000 4000 5000 6000 7000 8000Hertz9000 10000es no ps eRe dut i nga Ms)1.510.50 1000 2023 3000 4000 5000 6000 7000 8000Hertz9000 10000e r ged(e sa hP-500-1000-15000 1000 2023 3000 4000 5000 6000 7000 8000Hertz9000 10000高通滤波器的频响特性带通滤波器的频响特性试验板信号源Input1GndGndOut3示波器试验名称:通用DSP 实现FIR 滤波器姓名:刘宇〔〕同组人:石龄佳〔〕三.试验原理图:图2-5 试验原理图四.试验仪器稳压电源一台,双踪示波器一台, 信号源一台,试验板一块五、试验内容及步骤:1、按试验连接图检查连线是否正确,然后依次翻开信号源﹑示波器﹑试验装置的电源开关。
实验三FIR滤波器的DSP实验报告

实验三FIR滤波器的DSP实验报告实验目的:1.掌握FIR滤波器的基本原理和结构;2.了解DSP芯片的基本使用方法;3.熟悉MATLAB的使用,实现FIR滤波器的设计和仿真。
实验器材:1.TMS320C6748DSP开发板;2.电脑;3.MATLAB软件。
实验原理:FIR滤波器是数字信号处理中常用的一种滤波器,其基本原理是利用线性相位特性实现对信号频谱的选择性抑制。
FIR滤波器的结构简单,稳定性好,并且可以实现任意的频率响应,因此被广泛应用于音频处理、图像处理等领域。
FIR滤波器的结构由延时单元、加法器和乘法器组成。
延时单元用于存储输入信号的过去值,加法器用于将输入信号和延时单元中的值相加,乘法器用于对加法器的输出进行加权求和。
根据加权系数的不同,可以实现不同的滤波特性。
在本实验中,我们使用MATLAB软件进行FIR滤波器的设计和仿真。
首先,通过指定滤波器的截止频率、通带和阻带的最大衰减等参数,使用MATLAB中的fir1函数进行滤波器的设计。
接下来,将得到的滤波器系数保存为C语言代码,通过DSP开发板进行实时滤波处理。
实验步骤:1. 在MATLAB中打开fir1函数进行滤波器设计。
根据实际需求,指定滤波器的截止频率、通带和阻带的最大衰减等参数。
通过运行代码,得到滤波器的系数。
2.将得到的滤波器系数保存为C语言代码,包括头文件和滤波函数。
7.运行程序,在DSP开发板上实时进行滤波处理,并将输出结果通过耳机进行播放。
实验结果:通过上述实验步骤,我们成功地实现了一个FIR滤波器的设计和DSP 实时处理。
通过调整滤波器参数和监听输出结果,我们观察到不同滤波器参数下得到的滤波效果不同。
通过对比实时输入信号和输出信号,我们可以清晰地看到滤波器对于输入信号频谱的选择性抑制。
实验总结:本次实验通过设计和实现FIR滤波器,加深了我们对滤波器原理和DSP芯片的理解。
通过MATLAB软件的辅助,我们可以直观地观察到滤波器在频率域的作用,对于滤波器的选择和优化提供了方便。
dsp实验报告 fir实验

dsp实验报告 fir实验
DSP实验报告 FIR实验
一、实验目的
本实验旨在通过设计一种FIR滤波器,加深对数字信号处理中FIR滤波器的理解,并掌握FIR滤波器的设计方法和实现过程。
二、实验原理
FIR滤波器是一种常见的数字滤波器,其特点是无需考虑系统的稳定性问题,且具有线性相位特性。
FIR滤波器的传递函数为:
H(z) = b0 + b1z^(-1) + b2z^(-2) + ... + bMz^(-M)
其中,b0、b1、b2...bM为滤波器的系数。
FIR滤波器的设计主要包括窗函数法、频率采样法和最优化法等。
三、实验步骤
1. 确定滤波器的通带截止频率和阻带截止频率;
2. 根据通带截止频率和阻带截止频率选择合适的窗函数;
3. 计算窗函数的系数;
4. 将窗函数的系数作为FIR滤波器的系数;
5. 利用MATLAB或其他数学软件进行FIR滤波器的模拟实现;
6. 对设计的FIR滤波器进行性能评估,包括幅频特性、相频特性、群延迟等。
四、实验结果
经过实验设计和模拟实现,得到了满足要求的FIR滤波器。
通过对滤波器的性
能评估,得到了其幅频特性、相频特性和群延迟等性能指标。
实验结果表明,
设计的FIR滤波器具有良好的滤波效果,能够满足通带截止频率和阻带截止频
率的要求。
五、实验总结
通过本次实验,加深了对FIR滤波器的理解,掌握了FIR滤波器的设计方法和实现过程。
同时,也了解了数字信号处理中滤波器的重要性,以及如何根据实际需求设计出满足要求的滤波器。
希望通过本次实验,能够对数字信号处理的相关知识有更深入的了解和掌握。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 代码被修改的部分: #define S2_Freq 160 // 信号 2 频率 void init_fft_tab(void) //输入波形的初始化
{ float wt1; float wt2; inti; for (i=0;i<Sample_Numb;i++) { wt1=2*pi*i*S1_Freq; wt1=wt1/SampleFreq; wt2=2*pi*i*S2_Freq; wt2=wt2/SampleFreq; //此处实现 60Hz 和 160Hz 两个信号相乘。 SignalInput[i]=cos(wt1)*cos(wt2)*100; //SignalInput[i]=(cos(wt1)+cos(wt2))/2*100; } } 由时域相乘频域卷积可以知道 60Hz 和 160Hz 的余弦信号相乘将得到有 100Hz 和 220Hz 频率分量的信号。 2. CCS 仿真图形如下: A、时域信号波形为(图形入口地址:SignalInput) :
b) 用 SPtool 验证所设计的滤波器的功能 在 FDATool 里设计了一个 FIR 低通滤波器后,可以用 SPTool 来分析所设计的滤波器是否 实现了功能与 FDATool 一样。SPTool 可以对信号进行时域与频域的分析。测试滤波器是否实 现功能的主要步骤: 在 MATLAB 环境下产生一个混叠波信号,在 MATLAB 命令窗口输入: Fs = 20000;
} void main() { int p=0; n=0; wavein(); for(n=0;n<N;n++ ) { p=0; s=0; while((p<order)&&(p<=n)) { s=fir[p]*input[n-p]+s; p++; } output[n]=s; } }
的频谱:
c)
输出波形的频谱:
一、 通过代码修改、仿真,理解定点运算和浮点运算相比的优缺点。 定点运算的优点是:效率高,硬件单元比较简单,适合在低成本或者一些高速的 DSP 上应用;缺点主要就是丢失了精度,并且计算过程容易溢出。 浮点运算的优点很明显,浮点数有更大的数字表示范围,数据运算时不容易产生溢出, 运算精度也比定点运算高;但是其缺点是运算复杂,硬件较复杂,带有浮点运算单元的 DSP 明显比定点 DSP 价格高,增加了成本。 二、 通过仿真波形的分析、理解滤波器阶数与滤波器延时以及滤波器的阻带衰减之间 的关系。 在利用窗函数设计的 FIR 滤波器中,用同一种窗函数设计的 FIR 数字滤波器的阶数 N 不 同,所得到的滤波器的过渡带会不一样,N 越大,过渡带越窄。滤波器的阻带衰减只有窗形 状决定,不受滤波器阶数的影响;但是滤波器的阶数太高,会导致过渡带很窄,暂态增加, 延时很长。 三、 实验程序: #include <math.h> #include <stdlib.h> #define order 14 #define N 128 #define pi 3.14159265358979323846 float fir[order] = {0,0.00254885266601421,0.0147553639227699, 0.0448623472097668,0.0949715275858371,0.152016225973152,0.19084568264246, 0.19084568264246,0.152016225973152,0.0949715275858371,0.0448623472097668, 0.0147553639227699,0.00254885266601421,0}; float s; inti,n; float input[N],output[N]; int fs=20000; int f1=1000; int f2=5000; voidwavein() { for(n=0;n<N;n++ ) input[n]= sin(2*pi*n*f2/fs)+sin(2*pi*n*f1/fs);
B、对应谱为(图形入口地址:SignalInput) :
C、FFT 输出结果(图形入口地址:FFT_W) :
分析采样率、FFT 点数与频谱分辨率之间的关系 由采样定理知:采样率 Fs 应当满足������ 。频率 ������ ≥ 2������ℎ (������ℎ 为信号的最高频率) 分辨率为:������0 = ������ ������ ������ = 1 ������������������ = 1 ������ (N 为 FFT 的点数,Ts 为采样间隔,NTs 就是采样前模拟信号的时间长度 T) , 可以得到信号长度越长, 频率分辨率越好。
实验内容:
一、 完成所给例程对应实验,验收结果如下: A、时域信号波形为(图形入口地址:SignalInput) :
B、对应谱为(图形入口地址:SignalInput) :
C、FFT 输出结果(图形入口地址:FFT_W) :
二、
修改代码为时域信号 60Hz 和 160Hz 两个信号相乘,分析其频谱,并说明理由。
FIR 滤波器的 DSP 设计
作业要求:
一、 修改代码:滤波器设计要求:线性相位低通滤波器,模拟信号通带为 0~1kHz,阻 带衰减在 5kHz 处为-60dB。采样率为 20kHz。 1. FIR 滤波器设计流程为,根据给出的滤波器设计(通带带宽、阻带衰减、相位要求)要 求, 在 matlab 环境下仿真得到滤波器系数, 得到了滤波器系数后在 CCS 下编程设计 DSP 的 FIR 滤波器。 a) 使用 matlab 中的 FDAtool 设计 FIR 滤波器 MATLAB 工具箱中的 FDATool 是通过指定滤波器的性能指标来快速设计数字滤波器, 它 是一种交互式工具,只要在 FDATool 工具里选择相应的滤波器设计方法,并填入需要的技术 指标,如通带阻带截止频率、阶数等,即可生成所需的滤波器。并可以在界面上可以看到幅 频相频、零极点分布等图形。 在本设计中:选择 fir 低通滤波器,阶数为 13,采样率为 20KHz,截止频率 fc=1KHz,窗 口设置为 Blackman 窗。
t = (0:500)/Fs; s = sin(2*pi*t*1000)+sin(2*pi*t*5000); subplot(1,1,1); plot(t, s); axis([0 0.005 -2 2]); grid
产生了 1000Hz 和 5000Hz 的混叠波,其波形显示图形为:
c)
在 FDATool 的界面里输出到 SPTool,然后在将导入 SPTool 的滤波器命名为 filter,点击
“Apply” ,这样,设计的滤波器就导入了 SPTool 中。在 SPtool 主界面里面,将输入信号 S,采样 频率 Fs 导入进去,并生成名为 output 的输出信号。通过点击该界面下的“view”可以得到输入 输出波形,点击“create”可以得到输出的频谱,这三个图形如下所示:
通过观察输入输出的波形图及频谱图验证所设计的滤波器的功能。 可以看出 5000HZ 的 频率分量被滤,所设计的滤波器实现了低通滤波功能。 2. 使用 CCS 编程实现 DSP 的 FIR 滤波 启动 CCS 软件,编写及修改程序,我们得到的仿真波形如下: a) 输入与输出波形:
四、
B、对应谱为(图形入口地址:SignalInput) :
由频谱图可以看出,60Hz 和 160Hz 相乘产生的信号的频率分量有 100Hz 和 220Hz。
C、FFT 输出结果(图形入口地址:FFT_W) :
三、 修改实验代码为 1024 点 FFT,进行程序的编译、运行和对应结果的查看。 1、代码被修改的部分(时域信号为 60Hz 和 180Hz 的两个波形相加) : #define Sample_Numb 1024 //设置 FFT 点数为 1024 点 voidfft(float datar[Sample_Numb],float datai[Sample_Numb]) { int x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,xx; inti,j,k,b,p,L; floatTR,TI,temp; //倒位序;由 1024 点可以得到顺序数可以由 10 位数表示,这里取 0-9; for(i=0;i<Sample_Numb;i++) { x0=x1=x2=x3=x4=x5=x6=x7=x8=0; x0=i&0x01;x1=(i/2)&0x01;x2=(i/4)&0x01;x3=(i/8)&0x01; x4=(i/16)&0x01;x5=(i/32)&0x01;x6=(i/64)&0x01;x7=(i/128)&0x01; x8=(i/256)&0x01;x9=(i/512)&0x01; xx=x0*512+x1*256+x2*128+x3*64+x4*32+x5*16+x6*8+x7*4+x8*2+x9; datai[xx]=datar[i]; } for(i=0;i<Sample_Numb;i++) { datar[i]=datai[i];datai[i]=0; } //10 级蝶形运算 for(L=1;L<=10;L++) { b=1;i=L-1; while(i>0) { b=b*2;i--; } for(j=0;j<=b-1;j++) {//
p=1;i=10-L; while(i>0) { p=p*2;i--;} p=p*j; for(k=j;k<1024;k=k+2*b) { TR=datar[k];TI=datai[k];temp=datar[k+b]; datar[k]=datar[k]+datar[k+b]*cos_tab[p]+datai[k+b]*sin_tab[p]; datai[k]=datai[k]-datar[k+b]*sin_tab[p]+datai[k+b]*cos_tab[p]; datar[k+b]=TR-datar[k+b]*cos_tab[p]-datai[k+b]*sin_tab[p]; datai[k+b]=TI+temp*sin_tab[p]-datai[k+b]*cos_tab[p]; } } } //计算 FFT 输出的功率 for(i=0;i<Sample_Numb/2;i++) { FFT_W[i]=sqrt(datar[i]*datar[i]+datai[i]*datai[i]); } } A、时域信号波形为(图形入口地址:SignalInput) :