1、二一二一一学年第 二 学期信息科学与工程学院课程设计报告书课程名称: 信号与系统课程设计 班 级: 电子信息工程学 号: 姓 名: 指导教师: 二一一年 六 月一 需求分析题目一、FFT对连续信号进行谱分析若信号由20Hz,220 Hz和750Hz三个正弦频率成分构成,试用FFT计算其频谱并画出其幅度谱(要求横坐标以Hz为单位),验证信号包含的频率成分。题目二、FFT对离散信号进行谱分析1. 计算序列的DTFT和DFT,观察栅栏效应设,要求用MATLAB实现: (1)计算的傅里叶变换,并绘出其幅度谱; (2)分别计算的4点DFT和8点DFT,并绘出其幅度谱。并说明它们和的关系。(提示:DFT变
2、换可用MATLAB提供的函数fft实现)2. 计算序列的FFT,观察频谱泄漏已知周期为16的信号。(1) 截取一个周期长度M=16点,计算其16点FFT其频谱,并绘出其幅度谱;(2) 截取序列长度M=10点,计算其16点FFT其频谱,绘出其幅度谱,并与(1)的结果进行比较,观察频谱泄漏现象,说明产生频谱泄漏的原因。题目三、线性卷积和循环卷积的比较设和是两个4点序列,要求用MATLAB实现:(1)计算与的线性卷积;(2)分别计算与的6、7、8点循环卷积。思考:(3)线性卷积与循环卷积的关系;(4)什么条件下,线性卷积与循环卷积相等?二原理分析和理论计算1.题目一的分析工程实际中经常碰到连续时间信
3、号,其频谱函数也是连续函数。为了能能够在计算机上能够处理、分析连续信号的频谱,要在时域和频域都离散化。首先要将要将无限长的时间信号截断成有限长并进行时域采样,且由时域采样定理知,要想由采样信号完全恢复原信号必须使采样频率不小于原信号最高频率的2倍,工程实际中常取35倍。接下来就要对频域进行离散化,即对采样信号进行DFT变换。理论推导得xa(k)=TDFTx(n)此式表明连续信号的频谱特性可以通过对连续信号采样并进行DFT,在乘以采样周期T的近似方法得到。设由于是周期信号,首先要确定该信号的周期,如果截取信号时没有至少一个完整周期的信号,则会发生泄漏现象。信号的周期为因此,截取信号的持续时间最好
4、为0.1s的整数倍。信号的最高频率为,因此,采样频率或采样间隔需满足,取采样频率和采样间隔分别为:,DFT的点长N从持续时间中算得令t=nT, n=0,1,2,199,代入原信号,得利用FFT计算200点的DFT。2题目二的分析2.1 计算序列的DTFT和DFT,观察栅栏效应 (1)序列的傅里叶变换(2)4点的DFT变换具体是值如下: (3)8点的DFT变换具体的值如下: 对在0,2上等间隔采样4点得 显然于序列的值对应相等,即是对在0, 2上从0开始的4点等间隔采样对在0,2上等间隔采样8点得 显然于序列的值对应相等,即是对在0, 2上从0开始的8点等间隔采样2.2计算序列的DFT,观察频谱
5、泄露对信号进行FFT计算,首先必须使其变成时宽有限的信号,这就相当于在时域乘以一个窗函数如矩形窗,窗内数据并不改变,对频域的影响可用卷积公式表示式中,是原信号想x(n)的频谱,是窗函数的频谱。卷积的结果使加窗后得到的频谱与原来的频谱不同,产生了失真。这种失真造成的频谱的“扩散”,这就是所谓的“频谱泄漏”。3.题目三的分析与的点循环卷积定义为:循环卷积的实现步骤:当时,分别将与相乘,并在到区间内求和,便得到与的循环卷积。设x(n)是N1点的有限长序列(0nN1-1),h(n)是N2点的有限长序列(0nN2-1),x(n)和y(n)的线性卷积为 y1(n)是长度为N1+N2-1的有限长序列设是两序
6、列的L点的循环卷积,经过数学推导有下式次式表明循环卷积真是周期严拓后的线性卷积取主值序列,循环的周期是循环卷积的点数。所以要使循环卷积等于线性卷积而不产生混叠的充分条件为LN1+N2-1所以本题中7点和8点的循环卷积均等于线性卷积三详细设计1.FFT对连续信号的谱分析源程序如下:function t1 %函数的定义格式n=0:199; %采样点数为200点x=0.25*sin(0.02*pi.*n)+0.5*sin(0.22*pi.*n)+sin(0.75*pi.*n);%x是连续信号离散后的采样序列X=fft(x,200); %对x做200点的FFT F=abs(X); %取傅里叶变换的模w
7、=n*10;%将横轴变为频率,因为采样点数0,1,.,N-1与0,fs对应%频率w=n*10stem(w,F); %画出连续信号的幅度谱xlabel(w/HZ); %将横坐标定位wlegend(连续信号的谱分析) %为坐标图添加标题2. 计算序列的FFT,观察频谱泄漏2.1 计算序列的DTFT和DFT,观察栅栏效应设计思路:对于满足绝对可和的序列,其傅里叶变换和反变换的定义为序列x(n)是离散的,但序列是以2为周期的w的连续函数,为了能够在计算机上处理,需要对x(n)进行截断,并对频域离散化,近似处理后有其中,M是对w一个周期内的采样,k的取值自行确定,若想观察一个周期内的频谱,k=0到M-1
8、;若想观察2个周期k=0到2M-1,以此类推。源程序如下:function t2 %定义函数名为t2的函数x=1 1 1 1; %实验序列n=0:3;M=input(输入整数M=);%序列的傅里叶变换的频域仍然是连续的需要离散化%M是对w一周期内的采样k=0:2*M-1; %观察2个周期w=2*pi/M*k; %w代表频率,是频域的自变量X=x*(exp(-j*2*pi/M).(n*k); %序列的傅里叶变换F1=abs(X); %取傅里叶变换的模F2=abs(fft(x,4); %序列4点的FFT并取模F3=abs(fft(x,8); %序列8点的FFT并取模subplot(311)%以下是
9、画图plot(w,F1);legend(序列的傅里叶变换)axis(0 2*pi 0 6); %控制坐标的范围subplot(312)stem(n,F2);legend(序列的4点fft)subplot(313)n=0:7;stem(n,F3);legend(序列的8点fft)2.2计算序列的DFT,观察频谱泄露源程序如下:function t2_2 %定义函数t2_2n=0:15;x1=cos(10*pi.*n/16)+cos(12*pi.*n/16); %原序列X1=fft(x1); %默认计算16点的FFT subplot(311);stem(n,abs(X1); %画出16点FFT的幅
10、度谱legend(16点的幅度谱)subplot(312);stem(n,angle(X1);legend(16点的相位谱) %画出16点FFT的相位谱n=0:9;X2=fft(x1,10); %计算10点的FFTsubplot(313);stem(n,abs(X2);legend(10点的幅度谱); %画出10点FFT的幅度谱3.线性卷积和循环卷积的比较设计思路:线性卷积直接通过调用函数conv实现,循环卷积通过DTFT的性质实现。由时域循环卷积定理知,时域的循环讲讲价对应频域的乘积,即若 X1(k)=DFTx1(n) X2(k)=DFTx2(n)且 X3(k)=X1(k)X2(k)则具体步
11、骤是:1. 对2个序列x1(n)、x2(n)进行补零至所做循环卷积的点数L2. 分别计算2个序列的L点的FFT得X1(k)、X2(K)3. X3(k)= X1(k)X2(K)4. 计算x3(n)=IDFT(X3(k)5. x3(n)就等于x1(n)和x2(n)的循环卷积源程序如下:function t3 %定义函数t3x1=1 2 2 1; x2=1 -1 1 -1;n=0:6;y=conv(x1,x2); %计算线性卷积subplot(221)stem(n,y); %画出线性卷积的图legend(线性卷积)%计算6点循环卷积x1(6)=0; %将序列x1补零至6点x2(6)=0; %将序列x
12、2补零至6点n=0:5;X1=fft(x1); %计算序列x1的6点的FFTX2=fft(x2); %计算序列x2的7点的FFTX3=X1.*X2; %两序列的6点FFT相乘x3=ifft(X3); %快速傅里叶反变换 subplot(222)stem(n,x3);legend(6点循环卷积)%以下计算7点循环卷积,原理同上x1(7)=0;x2(7)=0;n=0:6;X1=fft(x1);X2=fft(x2);X3=X1.*X2;x3=ifft(X3);subplot(223)stem(n,x3);legend(7点循环卷积)%以下计算8点循环卷积,原理同上x1(8)=0;x2(8)=0;n=
13、0:7;X1=fft(x1);X2=fft(x2);X3=X1.*X2;x3=ifft(X3);subplot(224)stem(n,x3);legend(8点循环卷积)四调试分析过程描述在看书真正弄懂理论之后,在加上实验四的基础,这次实验的调试比较顺利。碰到一个问题是:在调用stem画序列,默认的情况下标从1开始,而我们一般要求从0开始。所以每次调用stem时要自己首先要设定一个从0开始的对应的坐标变量。其他遇到的问题主要是MATLAB中的一些语法错误,在翻阅相关书籍之后很快解决。各题正确的输出结果如下所示:第一题连续信号的频谱如下图第二题的输出结果如下从上图直观看出序列4、8点的FFT是对
14、序列DFT的采样,完全符合理论计算结果对比16和10点的幅度谱发现,10点的有明显的频谱泄漏第三题循环卷积和线性卷积的比较如下图7、8点的循环卷积与线性卷积的值在相应处相等,6点的循环卷积是线性卷积6点周期严拓五总结 通过这次课程设计掌握了利用FFT对连续信号、离散信号进行谱分析的方法,掌握了利用FFT计算线性卷积的方法,加深了DTFT、DFT之间关系的理解,在实践中运用了采样定理,同时也观察了FFT进行谱分析时导致的误差,如栅栏效应、频谱泄露与谱间干扰。此外,还复习了MATLAB的编程以及MATLAB中与信号有关的指令的函数。在写此报告时,发现要将理解的理论真正组织成语言仍然是很有难度,在反复查看课本完成这一过程之后又加深了对这些知识的掌握。总的来说,在弄懂理论之后,在加上实验四的基础,这次的课程设计完成起来十分顺利!