答:
如图所示,可以看出对于求频域采样点数N小于原时域序列长度M的N点离散频谱是,可以先对元序列x(n)以N为周期进行周期延拓后去其主值区序列,再计算N点DFT则得到N点频域采样。
其所求的N点离散频谱对应的时域离散序列是元序列x(n)以N为周期进行周期延拓后取主值区序列,而不是原序列x(n).
实验二正余弦信号的谱分析
1.实验目的
学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便正确应用FFT。
2.实验原理
用FFT对信号作频谱分析是学习数字信号处理的重要内容。
经常需要进行谱分析的信号是模拟信号和时域离散信号。
对信号进行谱分析的重要问题是频谱分辨率F和分析误差。
频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是2π/N,因此要求2π/N≤F。
可以根据此式选择FFT的变换区间N。
误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时,离散谱的包络才能逼近于连续谱,因此N要适当选择大一些。
周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。
如果不知道信号周期,可以尽量选择信号的观察时间长一些。
对模拟信号进行谱分析时,首先要按照采样定理将其变成时域离散信号。
如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。
3.实验步骤及内容
(1)对一个频率为10Hz,采样频率为64Hz的32点余弦序列进行谱分析,画出其频谱图;若将频率改为11Hz,其他参数不变,重新画出该序列的频谱图,观察频率泄漏现象,分析原因。
泄漏的原因:
通过图可看出:
频率为10Hz的余弦曲线DFT只有两个点不等于零,位于k=5和
k=27处,k=5对应于频率10Hz,k=27对应于频率54Hz。
这样DFT确实正确的分辨了余弦信号的频率。
将频率改为11Hz,采样频率和窗长度依然为32点,计算图像可看出:
频谱图上k=5和k=27处都有较大的峰值,而其它的点上幅度不再为零。
这两个峰值对应的频率为10Hz和12Hz所以信号的峰值位于两者之间本来是单一的11Hz频率的能量会分不到许多DFT频率上,这种现象叫频率泄露,来源于截断效应。
(2)考察DFT的长度对双频率信号频谱分析的影响。
设待分析的信号为
令两个长度为16的正余弦序列的数字频率为
及
。
取N为四个不同值16,32,64,128。
画出四个DFT幅频图。
分析DFT长度对频谱分辨率的影响。
DFT长度对频谱分辨率的影响:
DFT样本值就是其DTFT在相应位置的采样。
在图中很难看
出两个峰值,因此要提高它的分辨率,故把R增大,逐渐可以看出它有两个峰值,将k换算
成数字频率f=w/2*pi=k/R.这样可确定峰值的位置大体在f=0.21和0.35之附近与信号
的给定频率有一定的误差,这也是截断和泄露带来的问题,在这图上还可以看到一些较小
的峰,这是很难判断是输入信号固有的还是由泄露引起的。
这说明了增加DFT长度R减小
了相邻样本间的频率间距,提高频谱的视在分辨率,因而可以提高样本未知的测定精度。
(3)在上题中若把两个正弦波的频率取得较近,令
,
,试问怎样选择FFT参数才能在频谱分析中分辨出这两个分量?
要能分清两个频率,分辨率至少应达到f=0.03。
因为此处的数字频率是对采样频率Fs
进行归一化,因此总的样本数至少要达到1/0.03=33。
加窗以后可以使频谱函数更加光滑便于分辨峰值位置和准确的数值,为了提高实际分辨率,应该尽量增加信号的长度N及DF长度R,当受到条件限制不能提高N,则单独提高R可以提高视在分辨率。
4.思考题
(1)对于周期序列,如果周期不知道,如何用FFT进行谱分析?
答:
如果X(n)的周期预先不知道,可先截取M点进行DFT,即
0<=K<=M-1
再将截取长度扩大一倍,截取
0<=K<=2M-1
比较
和
,如果二者的主谱差别满足分析误差要求,则以
或
近似表示
的频谱,否则继续将截取长度加倍,直至前后再次分析所得主谱频率差别满足误差要求,设最后截取长度为iM,则
表示
点的谱线强度
(2)如何选择FFT的变换区间?
(包括非周期信号和周期信号)
答:
对于非周期信号:
有频谱分辨率F,而频谱分辨率直接和FFT的变换区间有关,因为FFT能够实现的频率分辨率是2π/N...因此有最小的N>2π/F。
就可以根据此式选择FFT
的变换区间。
对于周期信号,周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。
实验三语音信号滤波处理
1.实验目的
(1)了解语音信号的产生、采集,能绘制语音信号的频率响应曲线及频谱图;
(2)学会用MATLAB对语音信号进行分析和处理;
(3)掌握用滤波器去除语音信号噪声的方法,观察去噪前后的语音信号。
2.实验原理
(1)语音信号的采集
在MATLAB软件平台下,利用函数wavread()对语音信号采集,并记录采样频率和采样点数。
将语音信号转换成计算机能够运算的有限长序列。
wavread函数的调用格式如下:
y=wavread(file)
读取file所规定的wav文件,返回采样值放在向量y中。
[y,fs]=wavread(file)
采样值放在向量y中,fs表示采样频率(Hz)。
(2)用FFT作谱分析
FFT即快速傅立叶变换,它是从DFT运算中发展起来的,利用系数
的对称性和周期性减少运算量。
长度为N的序列直接计算DFT需要
次复乘和
次复加,而用FFT进行运算一般需要
次复乘和
次复加,从而使DFT的运算大大简化。
用FFT对连续信号进行谱分析的步骤如下:
图3.1连续信号谱分析过程
引入前置低通滤波器LPF是为了消除或减少时域连续信号转换成序列时可能出现的频谱混叠现象。
表示时域有限的窗函数。
(3)设计滤波器去除语音信号的噪声
通过wavread()函数将语音信号读入,通过频率采样及fft()产生信号,并对之加噪,通过窗函数法设计滤波器滤掉该语音信号的噪声,并对比滤波前后的语音波形和频谱。
3.实验内容
(1)利用Windows下的录音机录制一段自己的话音,时间在1s内。
然后在Matlab软件平台下,利用wavread函数对语音信号进行采样,记住采样频率和采样点数;
M3_1;
(2)画出语音信号的时域波形,对采样后的语音信号进行快速傅立叶变换,得到信号的频谱特性,画出采样信号的时域波形和频谱图;
M3_2;
(3)根据对语音信号谱分析的结果,确定滤除噪声所需滤波器的技术指标,设计合适的数字滤波器,并画出滤波器的频域响应;
答:
根据对加噪语音信号谱的分析得滤除噪声所需的滤波器应为低通滤波器。
技术指标如下:
Fp=1000HZ;Fs=1200HZ;rp=0.1;rs=60
M3_3;
(4)用所设计的滤波器对采集的信号进行滤波,在同一个窗口画出滤波前后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;
M3_4;
(5)回放语音信号;sound(x)
(6)为使编制的程序操作方便,设计一个信号处理用户界面。
在所设计的系统界面上可以选择滤波器的类型,输入滤波器的参数,显示滤波器的频率响应,选择信号等。
实验四数字滤波器的设计及实现
1.设计目的
(1)熟悉IIR数字滤波器的设计原理和方法;
(2)学会调用MATLAB信号处理工具箱中的滤波器设计函数设计各种IIR数字滤波器,学会根据滤波要求确定滤波器指标参数;
(3)掌握用IIR数字滤波器的MATLAB实现方法,并能绘制滤波器的幅频特性、相频特性;
(4)通过观察滤波器的输入、输出信号的时域波形及其频谱,建立数字滤波的概念。
2.设计原理
抑制载波单频调幅信号的数学表达式为
(4.1)
其中,
称为载波,
为载波频率,
称为单频调制信号,
为调制正弦波信号频率,且满足
>
。
由(4.1)式可见,所谓抑制载波单频调制信号,就是两个正弦信号相乘,它有2个频率成分:
和频
+
,差频
-
,这两个频率成分关于载波频率
对称。
所以,1路抑制载波单频调幅信号的频谱图是关于载波频率
对称的两根谱线。
3.设计内容
(1)调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st,观察st的时域波形和幅频特性曲线;
M4_1;
(2)要求将st中的三路调幅信号分离,通过观察st的幅频特性曲线,分别确定可以分离st中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通带截止频率和阻带截止频率,要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为60dB;
(3)编程调用MATLAB滤波器设计函数分别设计这三个数字滤波器,并绘图显示其幅频特性曲线;
(4)调用滤波函数filter,用所设计的三个滤波器分别对复合信号st进行滤波,分离出st中的三路不同载波频率的调幅信号,并绘图显示滤波后信号的时域波形和频谱,观察分离效果
1低通滤波器的通带截止频率应大于275HZ所以选300HZ,阻带截止频率应小于450HZ,选400HZ,低通滤波器程序与幅频特性图要求通带截止300HZ,最大衰减0.1dB;通带截止400HZ,最小衰减60dB。
M4_2;
2,带通滤波器的通带截止频率应包含450HZ~550HZ,故选400HZ~600HZ,阻带截止频率应包含275HZ和900HZ,故选300HZ~800HZ,带通滤波器程序与幅频特性图,要求通带截止400HZ和600HZ,最大衰减0.1dB;阻带截止300HZ和800HZ,最小衰减60dB。
M4_3;
③,高通滤波器的通带截止频率应小于900HZ,故选800HZ,阻带截止频率应大于550HZ,故选600HZ高通滤波器程序与幅频特性图要求通带截止800HZ,最大衰减0.1dB;阻带截止600H最小衰减60Db
M4_4;
4.思考题
(1)请阅读信号产生函数mstg,确定三路调幅信号的载波频率和调制信号频率。
答:
第一路载波频率:
1000HZ调制信号频率:
100HZ
第二路载波频率:
500HZ调制信号频率:
250HZ
第三路载波频率:
250HZ调制信号频率:
25HZ
(2)信号产生函数mstg中采样点数N=1600,对st进行N点FFT可以得到6根理想谱线。
如果取N=1800,可否得到6根理想谱线?
为什么?
N=2000呢?
请改变函数mstg中采样点数N的值,观察频谱图验证您的判断是否正确。
答:
N=1800时不能得到6根理想谱线,而N=2000时可以得到。
因为信号st是周期序列,谱分析时要求观察时间为整数倍周期。
分析可知,st的每个频率成分都是25Hz的整数倍。
采样频率Fs=10kHz=25×400Hz,即在25Hz的正弦波的1个周期中采样400点。
所以,当N为400的整数倍时一定为st的整数个周期。
因此,采样点数N=1600和N=2000时,对st进行N点FFT可以得到6根理想谱线。
如果取N=1800,不是400的整数倍,不能得到6根理想谱线。
个人体会
此次课程设计我收获很多,一方面巩固了本学期所学的数字信号处理课程的内容,另一方面增强了MATLAB软件的使用熟练程度。
此次设计进行还算顺利,除过一些小的问题之外基本没有太大的问题。
很多都可以通过自己查资料解决。
就像语音信号处理的实验中,自己不懂得如何将语音信号添加到MATLAB软件仿真环境中,后来通过查资料找到,要导入语音信号。
必须先将语音信号通过Impotdata导入之后才能对语音信号进行处理。
由于自己对于数字信号处理的基础知识掌握不是很牢靠,所以有时将原始时域波形的图像与通过FFT变换之后的图像相混淆,所以导致波形图像显示出错。
后来通过跟同组的同学进行交流,才发现自己的问题,也及时进行了更改。
还有由于软件版本的不同,我的MATLAB版本中没有ellipord这个函数(椭圆滤波器最小阶数和截止频率的确定函数。
语法:
[N,Wc]=ellipord(wp,ws,Rp,Rs,'s')Rp、Rs分别为通带最大波纹和阻带最小衰减;wp、ws分别为为通带边界频率和阻带边界频率,单位为rad/s。
这四个参数为滤波器的基本性能指标,返回值N为实现给定性能指标的最小阶数,Wc为模拟滤波器的截止频率,单位为rad/s。
's'表示模拟滤波器,缺省时该函数适用于数字滤波器,此时wp及ws均为0~1之间的数值,即频率与抽样频率的比值。
)最后通过查找网上找到MATLAB的数字信号处理DSP工具箱,才将程序成功运行。