- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信号分析与处理实验报告
信号分析与处理
实验报告
实验目的
(1)掌握计算序列的离散傅立叶变换(DFT)的方法;
(2)掌握实现时间抽取快速傅立叶变换(FFT)的编程方法;
(3)复习复数序列的运算方法;
(4)掌握设计IIR数字滤波器的冲激响应不变法和双线性变换法;
(5)掌握IIR数字滤波器的实现方法。
实验原理
1、快速傅利叶变换的软件实现
(1)程序输入元素的数目必须为2的整数次幂,即N为2的M次幂,整个运算需要M级蝶形运算。
(2)输入序列按二进制码位倒置排列,输出序列按自然顺序排列。
(3)输出数据占用输入数据的存储单元。
(4)每一级含N/2个基本蝶形运算。
(5)第L级中有N/2的L次幂个群,群与群间隔为2的L次幂。
(6)同一级中各个群的系数W分布相同,第L级的群中有2的L-1次幂个系数。
(7)处于第L级的群的系数是(p=1,2,3,……,)
(8)对于第L级的蝶形运算,输入数据的间隔为2的L-1次幂。
码位倒置程序流程图
蝶形运算程序流程图
IIR数字滤波器的设计
以教材第九章无限冲激响应数字滤波器的例子说明软件实现方法。设滤波器为级联型结构,其系统函数如下:
式中
显然,该数字滤波器为无限冲激响应数字滤波器,其数字网络和软件流程图分别如图所示。依据软件流程图可以编制出基于C语言的实现程序。应用该程序可以计算上述数字滤波器输出序列的前N个数据。若要求该数字滤波器为具有输入输出端口的实时数字滤波器,则可以将有限循环改为无限循环,并取消输出数据的长度限制。这可通过修改for循环语句来实现,即
for( ; ; ){
……
}
然后,将输入输出数据的操作对象由数组修改为端口。
IIR数字滤波器级联型结构图
5、IIR数字滤波器级联型结构实现程序流程图
实验内容与步骤
为了验证所设计数字滤波器的实际功能,首先将下列分别位于通带、过渡带和阻带的三个模拟信号数字化
V ,,
V ,,
V ,,
式中:为采样间隔;T为记录时间长度。
,,,,
数字化后的序列为:
将x(n)作为激励信号输入到所设计数字滤波器的输入端,计算输出端的响应信号y(n);
计算x(n)的快速傅立叶变换X(k),和y(n)的快速傅立叶变换Y(k);
用MATLAB画出x(n)、y(n)、X(k)和Y(k)的图像并做比较。
四、设计程序
#includemath.h
#includestdio.h
#define swap(a,b) T=(a); (a)=(b); (b)=T; /*宏定义的交换函数*/
void fft(float A[],float B[],unsigned M) /*快速傅利叶变换程序,数组A、B分别是待变换序列
的实部和虚部*/
{
unsigned long N,I,J,K,L,LE,LE1,P,Q,R;
float Wr,Wi,W1r,W1i,WTr,WTi,theta,Tr,Ti,T;
N=1M; /*N=2M 是序列的总长度*/
J=0;
for(I=0;IN-1;I++) /*码位倒置*/
{if(JI)
{swap(A[I],A[J]);
swap(B[I],B[J]);
}
K=N1;
while(K=2J=K)
{
J-=K;
K=1;
}
J+=K;
}
for(L=1;L=M;L++) /*外层循环由级数L控制,执行M次*/
{
LE=1L; /* LE=2L是群间隔*/
LE1=LE/2; /* LE1=2L-1是每个群的系数W数目*/
Wr=1.0;
Wi=0.0;
theta=(-1)*3.1415926536/LE1;
W1r=cos(theta);
W1i=sin(theta);
for(R=0;RLE1;R++) /*中层循环由群系数控制,执行次*/
{
for(P=R;PN-1;P+=LE) /*R是群系数的编号,P、Q是基本蝶形运
算两个输入数据在数组中的编号,循环每
次完成同一个系数的蝶形运算*/
{Q=P+LE1;
Tr=Wr*A[Q]-Wi*B[Q];
Ti=Wr*B[Q]+Wi*A[Q]; /*Tr
文档评论(0)