第2学年《数字信号处理实验讲义》Word文件下载.docx
《第2学年《数字信号处理实验讲义》Word文件下载.docx》由会员分享,可在线阅读,更多相关《第2学年《数字信号处理实验讲义》Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
在实验过程中,要求学生做到:
(1)预习实验指导书有关部分,认真做好实验内容的准备工作,就实验可能出现的情况提前作出思考和分析,需要计算的参数提前完成计算工作,并认真写出预习报告。
(2)仔细观察实验过程中图形随参数的变化,记录图形变化的主要情况,作出必要说明和分析。
(3)认真书写实验报告并在规定的时间内把实验报告交给辅导教师。
实验报告包括实验目的和要求,实验情况及其分析。
对需要编程的实验,写出程序设计说明,给出源程序框图和清单。
(4)遵守机房纪律,服从辅导教师指挥,爱护实验设备。
(5)实验课程不迟到。
如有事不能出席,所缺实验一般不补。
(6)实验验收分为两个部分。
第一部分是上机操作,包括检查程序运行和即时提问。
第二部分是提交书面的实验报告。
每个实验都应当在规定的时间内完成并检查通过,过期视为未完成该实验,扣该实验操作成绩。
为避免期末集中检查方式产生的诸多不良问题,希望同学们抓紧时间,合理安排,认真完成。
实验一快速傅立叶变换FFT及其应用
一、实验目的
1、在理论学习的基础上,通过本次实验,加深对快速傅立叶变换的理解,熟悉FFT算法及其程序的编写。
2、熟悉应用FFT对典型信号进行频谱分析的方法。
3、了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT。
4、熟悉应用FFT实现两个序列的线性卷积和相关的方法。
二、实验仪器设备
计算机MATLAB软件
三、实验原理及方法
1、快速FFT
在各种信号序列中,有限长序列信号处理占有很重要地位,对有限长序列,我们可以使用离散Fouier变换(DFT)。
这一变换不但可以很好的反映序列的频谱特性,而且易于用快速算法在计算机上实现,当序列x(n)的长度为N时,它的DFT和反变换定义分别为:
有限长序列的DFT是其Z变换在单位圆上的等距采样,或者说是序列Fourier变换的等距采样,因此可以用于序列的谱分析。
而快速傅立叶变换并不是与不同的另外一种变换,而是为减少计算次数的一种快速有效的算法。
这种快速算法,主要是利用了下面两个特性使长序列的分解为更小点数的所实现的。
2、用FFT计算线性卷积
用FFT可以实现两个序列的圆周卷积。
在一定的条件下,可以使圆周卷积等于线性卷积。
一般情况,设两个序列的长度分别为N1和N2,要使圆周卷积等于线性卷积的充要条件是FFT的长度N≥N1+N2-1,对于长度不足N的两个序列,分别将他们补零延长到N。
当两个序列中有一个序列比较长的时候,我们可以采用分段卷积的方法。
有两种方法:
重叠相加法、重叠保留法。
3、利用FFT求解离散傅立叶变换(IFFT)
逆变换IFFT为
求X(k)的逆FFT可以分为以下3个步骤:
(1)取X(k)的共扼,得到;
(2)求的FFT,得N;
(3)取的共扼,并除以N,即得到x(n)。
采用这种方法可以直接用FFT程序来计算逆FFT。
有关IFFT的具体应用,与FFT一一对应,在此不再赘述。
4、MATLAB相关函数、程序
MATLAB为计算数据的离散快速傅立叶变换,提供了一系列丰富的数学函数,主要有fft、Ifft、fft2、ifft2,fftn、ifftn和fftshift、Ifftshift等。
当所处理的数据的长度为2的幂次时,采用基-2算法进行计算,计算速度会显著增加。
所以,要尽可能使所要处理的数据长度为2的幂次或者用添零的方式来添补数据使之成为2的幂次。
fft和ifft函数一维快速正傅里叶变换和逆傅里叶变换
调用方式:
Y=fft(X)
参数说明
·
如果X是向量,则采用傅立叶变换来求解X的离散傅立叶变换;
如果X是矩阵,则计算该矩阵每一列的离散傅立叶变换;
如果X是(N维数组,则是对第一个非单元素的维进行离散傅立叶变换;
Y=fft(X,N)
N是进行离散傅立叶变换的X的数据长度,可以通过对X进行补零或截取来实现。
Y=fft(X,[],dim)或Y=fft(X,N,dim)
在参数dim指定的维上进行离散傅立叶变换;
当X为矩阵时,dim用来指定变换的实施方向:
dim=1,表明变换按列进行;
dim=2表明变换按行进行。
函数Ifft的参数应用与函数Fft完全相同。
应用说明
【实例1】fft的应用
X=[2128];
Y=fft(X)
运行结果
Y=
13.00000+7.0000i-5.00000-7.0000
【实例2】fft(X,N,dim)的应用
A=[2578;
1405;
3851;
9127];
Z=fft(A,[],1)
【实例3】fft在信号分析中的应用
使用频率分析方法从受噪声污染的信号x(t)中鉴别出有用的信号。
程序:
t=0:
0.001:
1;
%采样周期为0.001s,即采样频率为1000Hz;
%产生受噪声污染的正县正弦波信号;
x=sin(2*pi*100*t)+sin(2*pi*200*t)+rand(size(t));
subplot(2,1,1)
plot(x(1:
50));
%画出时域内的信号;
Y=fft(x,512);
%对X进行512点的傅立叶变换;
f=1000*(0:
256)/512;
%设置频率轴(横轴)坐标,1000为采样频率;
subplot(2,1,2)
plot(f,Y(1:
257));
%画出频域内的信号
图1-1时域信号和频域信号的比较
由上面的图1-1可以看出,从受噪声污染信号的时域形式中,很难看出正弦波的成分。
但是通过对x(t)作傅立叶变换,把时域信号变换到频域进行分析,可以明显看出信号中100Hz和200Hz的两个频率分量。
fft2和ifft2函数调用方式
1)Y=fft2(X)
如果X是向量,则此傅立叶变换即变成一维傅立叶变换fft;
如果X是矩阵,则是计算该矩阵的二维快速傅立叶变换;
数据二维傅立叶变换fft2(X)相当于fft(fft(X),即先对X的列做一维傅立叶变换,然后再对变换结果的行做一维傅立叶变换。
2)Y=fft2(X,M,N)
通过对X进行补零或截断,使得成为(M*N)的矩阵。
函数Ifft2的参数应用与函数Fft2完全相同。
【实例6-4】fft2、ifft2的应用
A=[25789;
13750;
26149;
81526];
Y=fft2(A);
B=ifft2(Y);
运行结果:
四、实验内容
1、分别对下列序列进行频谱分析:
编制DFT程序及FFT程序,并比较DFT程序与FFT程序的运行时间。
(1)实指数序列
(2)复指数序列
(3)周期为N的正弦序列
(4)周期为N的余弦序列
(5)矩形序列
从以上五种输入序列中选择3种作为实验内容进行实验。
其中(3)、(4)只能选其中一个。
2、序列,试绘制及它的离散傅里叶变换图。
五、思考题
对一个有限长序列进行DFT等价于将该序列周期延拓后进行DFS展开,因为DFS也只是取其中一个周期来计算,所以FFT在一定条件下也可以用以分析周期信号序列。
如果实正弦信号用16点FFT来做DFS运算,得到的频谱是信号本身的真实谱吗?
为什么?
六、实验报告要求
1、简述实验目的及原理。
2、按实验步骤附上实验信号序列和幅频特性曲线,分别分析所得到的图形,说明参数改变对时域和频域的影响。
3、总结实验中的主要结论。
4、简要回答思考题。
实验二IIR数字滤波器的设计
1、掌握IIR数字滤波器的设计原理、设计方法和设计步骤;
2、能根据给定的滤波器指标进行滤波器设计;
3、掌握数字巴特沃斯滤波器的设计原理和步骤;
4、加深对冲激响应不变法和双线性变换法设计IIR数字滤波器的了解,掌握MATLAB函数实现冲激响应变换的方法。
设计IIR滤波器时,首先根据模拟滤波器的指标设计出相应的模拟滤波器Ha(s),然后将设计好的模拟滤波器Ha(s)转换成满足给定技术指标的数字滤波器H(z)。
1、模拟原型低通滤波器Ha(s)的设计
模拟低通滤波器的幅频特性如图2-1所示。
图2-1模拟低通滤波器的幅频特性
模拟低通滤波器的技术指标有通带截止频率、通带内的最大衰减系数、阻带截止频率和阻带内的最小衰减系数。
,
已知、、和,可由止式求出滤波器的阶数N。
求出的N可能有小数部分一般取大于等于N的最小整数。
模拟滤波器的技术指标给定后,需要根据这组指标设计模拟系统函数,使其逼近理想滤波器特性,一般是根据幅度平方函数来逼近的。
典型的模拟滤波器有巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev)滤波器。
2、实验用MATLAB语言工具函数简介
在MATLAB的数字信号处理工具箱中提供了相应的设计函数,常用的有:
1)Butterworth模拟/数字滤波器设计
调用格式1:
[N,Wn]=buttord(Wp,Ws,Rp,Rs,’s’)
输入参数:
Wp通带截止频率,Ws阻带截止频率,Rp通带最大衰减,Rs阻带最小衰减;
输出参数:
N符合要求的滤波器最小阶数,Wn为Butterworth滤波器固有频率(3dB)。
调用格式2:
[b,a]=butter(n,wn,'
ftype'
’s’)
[b,a]=butter(