数字信号处理上机指导设计一 正余弦信号的谱分析【一】 设计目的1. 用DFT 实现对正余弦信号的谱分析;2. 观察DFT 长度和窗函数长度对频谱的影响;3. 对DFT 进行谱分析中的误差现象获得感性认识。
【二】 设计原理一、谱分析原理数字信号处理方法的一个重要用途是在离散时间域中确定一个连续时间信号的频谱,通常称为频谱分析,更具体地说,它也包括确定能量谱和功率谱。
数字频谱分析可以应用在很广阔领域,频谱分析方法是基于以下的观测:如果连续时间信号)(t g a 是带限的,那么它的离散时间等效信号)(n g 的DFT 进行谱分析。
然而,在大多数情况下,)(t g a 是在∞<<∞-t 范围内定义的,因此)(n g 也就定义在∞<<∞-n 的无线范围内,要估计一个无限长信号的频谱是不可能的。
实用的方法是:先让模拟连续信号)(t g a 通过一个抗混叠的模拟滤波器,然后把它采样成一个离散序列)(n g 。
假定反混叠滤波器的设计是正确的,则混叠效应可以忽略,又假设A/D 变换器的字长足够长,则A/D 变换中的量化噪声也可忽略。
假定表征正余弦信号的基本参数,如振幅、频率和相位不随时间改变,则此信号的傅立叶变换)(ωj eG 可以用计算它的DTFT 得到∑∞-∞=-=n nj j e n g e G ωω)()( (1.1) 实际上无限长序列)(n g 首先乘以一个长度为M 的窗函数)(n w ,使它变成一个长为M 的有限长序列,)()()(1n w n g n g =,对)(1n g 求出的DTFT )(1ωj e G 应该可以作为原连续模拟信号)(t g a 的频谱估计,然后求出)(1ωj eG 在πω20≤≤区间等分为N 点的离散傅立叶变换DFT 。
为保证足够的分辨率,DFT 的长度N 选的比窗长度M 大,其方法是在截断了的序列后面补上N -M 个零。
计算采用FFT 算法。
二、MATLAB 函数介绍1. 输入函数input( ) 格式:R=input(string)功能:在屏幕上显示input 括号后的’string ’内容,提示用户从键盘输入某值,并将输入的值赋给R 。
例如,在命令窗口输入R=input(‘How many apples ’) 会显示How many apples从键盘输入3会显示R=32. 一维快速傅里叶变换函数fft( )格式:y=fft(x)y=fft(x,n)说明:fft函数用于计算矢量或矩阵的傅里叶变换。
3.幅度函数abs()格式:abs(X)功能:对X取绝对值,当X是复数时,得到X的复模值。
例1-1 对余弦序列)4/xπn=进行8点谱分析,绘出序列和幅频特性曲线。
cos()(nMATLAB命令如下:N=input('输入谱分析的长度')n=0:N-1;x=cos(pi*n/4);subplot(1,2,1),stem(n,x), xlabel('n');ylabel('x1(n)'); %绘制序列的波形title('余弦序列');X=abs(fft(x,N)); %求余弦序列的N点FFTsubplot(1,2,2)k=0:N-1;stem(k,X) %绘制序列的幅频特性曲线xlabel('k');ylabel('X(k)');string=[num2str(N),'点FFT幅频曲线'];title(string);程序运行结果如图1.1所示。
图1.1 例1-1的运行结果【三】 设计内容1. 对一个频率为10Hz 的连续余弦信号,以采样频率为64Hz 得到离散余弦序列,对此余弦序列进行32点进行谱分析,画出其频谱图;若将信号频率改为11Hz ,其他参数不变,重新画出该序列的频谱图,观察频谱泄漏现象,分析原因。
2. 考察DFT 的长度对双频率信号频谱分析的影响。
设待分析的信号为 150)2sin()2sin(5.0)(21≤≤+=n n f n f n x ππ (1.2)令两个长度为16的正余弦序列的数字频率为22.01=f 及34.02=f 。
取N 为四个不同值16,32,64,128。
画出四个DFT 幅频图,分析DFT 长度对频谱分辨率的影响。
3. 在上题中若把两个正弦波的频率取得较近,令22.01=f ,25.02=f ,试问怎样选择FFT 参数才能在频谱分析中分辨出这两个分量?【四】课程设计报告要求完成课程设计任务后,应按要求提交课程设计报告。
设计报告应包含如下几个方面的内容。
1. 课程设计目的2. 课程设计要求。
3. 详细设计过程。
4. 调试分析。
5. 结果分析与体会。
6. 附录或参考资料。
设计二 数字滤波器的设计及实现【一】设计目的1. 熟悉IIR 数字滤波器和FIR 数字滤波器的设计原理和方法;2. 学会调用MATLAB 信号处理工具箱中的滤波器设计函数设计各种IIR 和FIR 数字滤波器,学会根据滤波要求确定滤波器指标参数;3. 掌握用IIR 和FIR 数字滤波器的MA TLAB 实现方法,并能绘制滤波器的幅频特性、相频特性;4. 通过观察滤波器的输入、输出信号的时域波形及其频谱,建立数字滤波的概念。
【二】设计原理抑制载波单频调幅信号的数学表达式为 []))(2cos())(2cos(21)2cos()2cos()(000t f f t f f t f t f t s c c c ++-==ππππ (2.1)其中,)2cos(t f c π称为载波,c f 为载波频率,)2cos(0t f π称为单频调制信号,0f 为调制正弦波信号频率,且满足c f >0f 。
由(2.1)式可见,所谓抑制载波单频调制信号,就是两个正弦信号相乘,它有2个频率成分:和频c f +0f ,差频c f -0f ,这两个频率成分关于载波频率c f 对称。
所以,1路抑制载波单频调幅信号的频谱图是关于载波频率c f 对称的两根谱线。
复合信号st 产生函数mstg 清单: function st=mstg%产生信号序列st ,并显示st 的时域波形和频谱%st=mstg 返回三路调幅信号相加形成的混合信号,长度N=800 N=800; %信号长度N 为800Fs=10000;T=1/Fs;Tp=N*T; %采样频率Fs=10kHz ,Tp 为采样时间 t=0:T:(N-1)*T;k=0:N-1;f=k/Tp;fc1=Fs/10; %第1路调幅信号载波频率fc1=1000Hz fm1=fc1/10; %第1路调幅信号的调制信号频率fm1=100Hz fc2=Fs/20; %第2路调幅信号载波频率fc2=500Hz fm2=fc2/10; %第2路调幅信号的调制信号频率fm2=50Hz fc3=Fs/40; %第3路调幅信号载波频率fc3=250Hz fm3=fc3/10; %第3路调幅信号的调制信号频率fm3=25Hz xt1=cos(2*pi*fm1*t).*cos(2*pi*fc1*t); %产生第1路调幅信号 xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t); %产生第2路调幅信号 xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t); %产生第3路调幅信号 st=xt1+xt2+xt3; %三路信号相加,得到复合信号 fxt=fft(st,N); %计算信号st 的频谱 %以下为绘图命令 subplot(2,1,1);plot(t,st);grid;xlabel('t/s');ylabel('s(t)');axis([0,Tp,min(st),max(st)]);title('(a)s(t)的波形') subplot(2,1,2);stem(f,abs(fxt)/max(abs(fxt)),'.');grid;title('(b)s(t)的频谱') axis([0,Fs/8,0,1.2]); xlabel('f/Hz');ylabel('幅度');该函数产生由三路抑制载波调幅信号相加构成的复合信号st ,并绘图显示st 的时域波形和幅频特性曲线如图2.1所示。
(a) s(t)的波形(b)s(t)的频谱图2.1 三路调幅信号st的时域波形和幅频特性曲线由图2.1可见,三路信号时域混叠无法在时域进行分离,但频域是分离的。
容易看出,这三路调幅信号的载波频率分别为250Hz、500Hz和1000Hz,所以可以通过滤波器的方法在频域分离,这就是本设计的目的。
【三】设计内容调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st,观察st的时域波形和幅频特性曲线;要求将st中的三路调幅信号分离,通过观察st的幅频特性曲线,分别确定可以分离st中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通带截止频率和阻带截止频率,要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为60dB;编程调用MATLAB滤波器设计函数分别设计这三个数字滤波器,并绘图显示其幅频特性曲线;调用滤波函数filter,用所设计的三个滤波器分别对复合信号st进行滤波,分离出st中的三路不同载波频率的调幅信号,并绘图显示滤波后信号的时域波形和频谱,观察分离效果。
【四】课程设计报告要求完成课程设计任务后,应按要求提交课程设计报告。
设计报告应包含如下几个方面的内容。
1. 课程设计目的2. 课程设计要求。
3. 详细设计过程。
4. 调试分析。
5. 结果分析与体会。
6. 附录或参考资料。
设计三 语音信号滤波处理【一】设计目的1. 了解语音信号的产生、采集,能绘制语音信号的频率响应曲线及频谱图;2. 学会用MA TLAB 对语音信号进行分析和处理;3. 掌握用滤波器去除语音信号噪声的方法,观察去噪前后的语音信号。
【二】设计原理1. 语音信号的采集在MA TLAB 软件平台下,利用函数wavread ( )对语音信号采集,并记录采样频率和采样点数。
将语音信号转换成计算机能够运算的有限长序列。
wavread 函数的调用格式如下:y=wavread(file)读取file 所规定的wav 文件,返回采样值放在向量y 中。
[y,fs]=wavread(file)采样值放在向量y 中,fs 表示采样频率(Hz )。
2. 用FFT 作谱分析FFT 即快速傅立叶变换,它是从DFT 运算中发展起来的,利用系数nkN W 的对称性和周期性减少运算量。
长度为N 的序列直接计算DFT 需要2N 次复乘和(1)N N -次复加,而用FFT 进行运算一般需要2log 2NN 次复乘和2log N N 次复加,从而使DFT 的运算大大简化。