1、时域采样与频域采样定理的验证实验实验一 时域采样与频域采样定理的验证实验1. 实验目的 (1) 时域采样理论与频域采样理论是数字信号处理中的重要理论。要求掌握模拟信号采样前后频谱的变化,以及如何选择采样频率才能使采样后的信号不丢失信息;(2) 要求掌握频率域采样会引起时域周期化的概念,以及频率域采样定理及其对频域采样点数选择的指导作用。2. 实验原理与方法 时域采样定理的要点是: 对模拟信号以T进行时域等间隔理想采样,形成的采样信号的频谱 会以采样角频率s(s=2/T)为周期进行周期延拓。公式为 采样频率s必须大于等于模拟信号最高频率的两倍以上,才能使采样信号的频谱不产生频谱混叠。利用计算机计
2、算上式并不方便,下面我们导出另外一个公式,以便在计算机上进行实验。 理想采样信号和模拟信号之间的关系为: 对上式进行傅里叶变换,得到: 上式中,在数值上xa(nT)x(n),再将=T代入,得到: 上式的右边就是序列的傅里叶变换,即上式说明采样信号的傅里叶变换可用相应序列的傅里叶变换得到,只要将自变量用T代替即可。 频域采样定理的要点是: 对信号x(n)的频谱函数在0,2上等间隔采样N点,得到:则N点IDFTXN(k)得到的序列就是原序列x(n)以N为周期进行周期延拓后的主值区序列,公式为 由上式可知,频域采样点数N必须大于等于时域离散信号的长度M(即NM),才能使时域不产生混叠,则N点IDFT
3、XN(k)得到的序列xN(n)就是原序列x(n), 即xN(n)=x(n)。如果NM,xN(n)比原序列尾部多NM个零点;如果N plot(fk1,abs(f1); title(a) FTxa(nT),Fs=1000Hz) xlabel(f(Hz); ylabel(幅度); subplot(3,2,4); plot(fk2,abs(f2); title(a) FTxa(nT),Fs=300Hz); xlabel(f(Hz);ylabel(幅度) plot(fk3,abs(f3); title(a) FTxa(nT),Fs=200Hz) xlabel(f(Hz);ylabel(幅度)频域:M=2
4、7;N=32;n=0:M;xa=0:floor(M/2);xb=ceil(M/2)-1:-1:0;xn=xa,xb;Xk=fft(xn,1024);X32k=fft(xn,32);X32n=ifft(X32k);X16k=X32k(1:2:N);X16n=ifft(X16k,N/2);subplot(3,2,2);stem(n,xn,.);box ontitle(b)三角形序列x(n);xlabel(n);ylabel(x(n);axis(0,32,0,20)k=0:1023;wk=2*k/1024;subplot(3,2,1);plot(wk,abs(Xk);title(a)FTx(n);x
5、label(omegapi);ylabel(|X(ejomega)|);axis(0,1,0,200)k=0:N/2-1;subplot(3,2,3);stem(k,abs(X16k),.);box on;title(c)16点频率采样);xlabel(k);ylabel(|X_1_6(k)|);axis(0,8,0,200);n1=0:N/2-1;subplot(3,2,4);stem(n1,abs(X16n),.);box on;title(d)16IDFT|X_1_6(k)|);xlabel(n);ylabel(|X_1_6(n)|);axis(0,32,0,20);k=0:N-1;su
6、bplot(3,2,5);stem(k,abs(X32k),.);box on;title(e)32点频率采样);xlabel(k);ylabel(|X_3_2(k)|);axis(0,16,0,200);n1=0:N-1;subplot(3,2,6);stem(n1,abs(X32n),.);box on;title(f)32点IDFT|X_3_2(k)|);xlabel(n);ylabel(|X_3_2(n)|);axis(0,16,0,20)4 思考题 如果序列x(n)的长度为M,希望得到其频谱在0, 2上的N点等间隔采样,当NM时, 如何用一次最少点数的DFT得到该频谱采样? 答:从实
7、验的结果中,可以看出对于求频域采样点数N小于原时域序列长度M的N点离散频谱是,可以先对元序列x(n)以N为周期进行周期延拓后去其主值区序列 再计算N点DFT则得到N点频域采样: 其所求的N点离散频谱对应的时域离散序列是元序列x(n)以N为周期进行周期延拓后取主值区序列,而不是原序列x(n).5、实验小结 通过这次实验,我对时域采样和频域采样的理论、定理的理解更加透彻,以前只是课堂上老师说的,现在通过自己亲手做了,也知道了其内在的原理是怎么样的了。在这次实验中,无论是在时域还是频域,对信号采样必须仔细考虑采样的参数:采样频谱、采样周期、采样点数,因为我在实验过程中,把stem()函数的参数设置错
8、了,其直接导致结果出错,我对代码检查了好几遍才改过来的,所以,我们要做,就是选取好采样的参数,避免另一个域周期延拓时发生混叠,否则,我们采样所得的数据肯定丢失一部分原信号的信息,我们便无法对原信号对原信号进行恢复和正确分析。此次实验所遇到的问题:主要是时域和频域的理论通过自己亲自设计的时候,对一些小知识点理解的不够彻底,使得在用MATLAB命令时,有点难下手。所以,理论应用于实践,实践源于理论,理论很重要的。设计二 正余弦信号的谱分析1 实验目的 学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便正确应用FFT。2. 实验原理 用FFT对信号作频谱分析是
9、学习数字信号处理的重要内容。经常需要进行谱分析的信号是模拟信号和时域离散信号。对信号进行谱分析的重要问题是频谱分辨率F和分析误差。频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是2/N, 因此要求2/NF。可以根据此式选择FFT的变换区间N。误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时, 离散谱的包络才能逼近于连续谱,因此N要适当选择大一些。周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。如果不知道信号周期,可以尽量选择信号的观察时间长一些。 对模拟信号进行谱分析时,首先要
10、按照采样定理将其变成时域离散信号。如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。 3 实验步骤及内容 (1)对一个频率为10Hz,采样频率为64Hz的32点余弦序列进行谱分析,画出其频谱图;若将频率改为11Hz,其他参数不变,重新画出该序列的频谱图,观察频率泄漏现象,分析原因。M文件:n=0:31; x1=cos(pi*20*n/64); %x2=cos(pi*22*n/64); subplot(2,2,1); %stem(n,x1) %绘制序列的幅频特性曲线 xlabel(n);ylabel(x1(n); title(10HZ余弦序列);
11、subplot(2,2,2);stem(n,x2) xlabel(n);ylabel(x2(n); title(11HZ余弦序列); X1=abs(fft(x1,32); %求x1余弦序列subplot(2,2,3) k=0:31; stem(k,X1) %绘制序列的幅频特性 xlabel(k);ylabel(X1(k); title(10HZ时32点FFT幅频曲线);X2=abs(fft(x2,32); %求x2余弦序列 subplot(2,2,4) k=0:31; stem(k,X2) xlabel(k);ylabel(X2(k); title(11HZ时32点FFT幅频曲线)泄漏的原因:
12、 通过图可看出:频率为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的正余弦序列的数字频率为及。取
13、N为四个不同值16,32,64,128。画出四个DFT幅频图。分析DFT长度对频谱分辨率的影响。程序:n=0:16; x=0.5*sin(pi*2*0.22*n)+sin (pi*2*0.34*n); X1=abs(fft(x,16); %求余弦序列的16点FFT subplot(2,2,1) k=0:15; stem(k,X1) %绘制序列的幅频特性曲线 xlabel(k);ylabel(X1(k); title(16点FFT幅频曲线) X2=abs(fft(x,32); %求余弦序列的32点FFT subplot(2,2,2) k=0:31; stem(k,X2) %绘制序列的幅频特性曲线
14、 xlabel(k);ylabel(X2(k); title(32点FFT幅频曲线) X3=abs(fft(x,64); %求余弦序列的64点FFT subplot(2,2,3) k=0:63; stem(k,X3) %绘制序列的幅频特性曲线 xlabel(k);ylabel(X3(k); title(64点FFT幅频曲线) X4=abs(fft(x,128); %求余弦序列的128点FFT subplot(2,2,4) k=0:127; stem(k,X4) %绘制序列的幅频特性曲线 xlabel(k);ylabel(X4(k); title(128点FFT幅频曲线) DFT长度对频谱分辨率
15、的影响: DFT样本值就是其DTFT在相应位置的采样。在图中很难看出两个峰值,因此要提高它的分辨率,故把R增大,逐渐可以看出它有两个峰值,将k换算成数字频率f=w/2*pi=k/R.这样可确定峰值的位置大体在f=0.21和0.35之附近 与信号的给定频率有一定的误差,这也是截断和泄露带来的问题,在这图上还可以看到一些较小的峰,这是很难判断是输入信号固有的还是由泄露引起的。这说明了增加DFT长度R减小了相邻样本间的频率间距,提高频谱的视在分辨率,因而可以提高样本未知的测定精度。 (3)在上题中若把两个正弦波的频率取得较近,令,试问怎样选择FFT参数才能在频谱分析中分辨出这两个分量? 要能分清两个
16、频率,分辨率至少应达到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=K2/F。就可以根据此式选择FFT的变换区间。对于周期信号,周期信号的频谱是离散谱,只有用整数倍周期的长度作F
17、FT,得到的离散谱才能代表周期信号的频谱。 设计三 语音信号滤波处理1.实验目的(1) 了解语音信号的产生、采集,能绘制语音信号的频率响应曲线及频谱图;(2) 学会用MATLAB对语音信号进行分析和处理;(3) 掌握用滤波器去除语音信号噪声的方法,观察去噪前后的语音信号。2.实验原理(1) 语音信号的采集 在MATLAB软件平台下,利用函数wavread( )对语音信号采集,并记录采样频率和采样点数。将语音信号转换成计算机能够运算的有限长序列。 wavread函数的调用格式如下: y=wavread(file) 读取file所规定的wav文件,返回采样值放在向量y中。 y,fs=wavread
18、(file)采样值放在向量y中,fs表示采样频率(Hz)。(2) 用FFT作谱分析FFT即快速傅立叶变换,它是从DFT运算中发展起来的,利用系数 的对称性和周期性减少运算量。长度为N的序列直接计算DFT需要次复乘和次复加,而用FFT进行运算一般需要次复乘和次复加,从而使DFT的运算大大简化。用FFT对连续信号进行谱分析的步骤如下: 图3.1 连续信号谱分析过程引入前置低通滤波器LPF是为了消除或减少时域连续信号转换成序列时可能出现的频谱混叠现象。表示时域有限的窗函数。(3) 设计滤波器去除语音信号的噪声 通过wavread()函数将语音信号读入,通过频率采样及fft ( )产生信号,并对之加噪
19、,通过窗函数法设计滤波器滤掉该语音信号的噪声,并对比滤波前后的语音波形和频谱。3.实验内容(1) 利用Windows下的录音机录制一段自己的话音,时间在1s内。然后在Matlab软件平台下,利用wavread函数对语音信号进行采样,记住采样频率和采样点数;答:程序:x=wavread(D:test.wav ); x,fs=wavread(D:test.wav ); % 把语音信号进行加载入 Matlab 仿真软件平台中 sound(x,fs); % 对加载的语音信号进行回放 stem(x); title(语音信号的时域波形) (2) 画出语音信号的时域波形,对采样后的语音信号进行快速傅立叶变换
20、,得到信号的频谱特性,画出采样信号的时域波形和频谱图;答:程序:Fs=8000; % 给出抽样频率 x=wavread(D:test.wav ); x,fs,nbits=wavread(D:test.wav ); % 把语音信号进行加载入 Matlab 仿真软件平台中 sound(x,fs,nbits); n = length (x) ; %求出语音信号的长度 X=fft(x,n); %傅里叶变换 subplot(3,2,1);plot(x);title(原始信号时域波形); subplot(3,2,2);plot(abs(X);title(原始域波形) x,fs,nbits=wavread
21、(D:test.wav); n = length (x) ; %求出语音信号的长度 noise=0.04*sin(10000*pi*x);%sin函数产生正弦噪声 s=x+noise; %语音信号加入正弦噪声 sound(s); subplot(3,2,3);plot(s);title(加正弦噪语音信号的时域波形); S=fft(s); %傅里叶变换 subplot(3,2,4);plot(abs(S);title(加正弦噪语音信号的频域波形) x,fs,nbits=wavread (D:test.wav); n=length (x) ; %求出语音信号的长度 noise=rand(size(
22、x/5);%产生白噪声 s=x+noise; %语音信号加入白噪声 sound(s); subplot(3,2,5);plot(s);title(加白噪声语音信号的时域波形); S=fft(s); %傅里叶变换 subplot(3,2,6);plot(abs(S);title(加白噪声语音信号的频域波形)(3) 根据对语音信号谱分析的结果,确定滤除噪声所需滤波器的技术指标,设计合适的数字滤波器,并画出滤波器的频域响应;答:根据对加噪语音信号谱的分析得滤除噪声所需的滤波器应为低通滤波器。技术指标如下: Fp=1000HZ;Fs=1200HZ; rp=0.1;rs=60程序:Fp=1000;Fs=
23、1200; wp=2*pi*Fp; ws=2*pi*Fs; rp=0.1;rs=60 n,wn=ellipord(wp,ws,rp,rs,s) b,a=ellip(n,rp,rs,wn,low,s) fk=linspace(1,3000,100) w=2*pi*fk h=freqs(b,a,w) magh=abs(h) subplot(2,1,1);plot(fk,magh);title(低通幅频响应) phah=unwrap(angle(h) subplot(2,1,2);plot(fk,phah);title(低通相频响应)(4) 用所设计的滤波器对采集的信号进行滤波,在同一个窗口画出滤波前后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化 ; 答:程序:Ft=8000; Fp=1000; Fs=1200; wp=2*pi*Fp/Ft; ws=2*pi*Fs/Ft; fp=2*Ft*tan(wp/2); fs=2*Fs*tan(wp/2); n11,wn11=buttord(wp,ws,1,50,s); %求低通滤波器的阶数和截止频率 b11,a11=butter(n11,wn11,s); %求S域的频率响应的参数 num11,den11=bilinear(b11,a11,0.5); %利用双线性变换实现频率响应S域到Z域的变换 x,fs,nbits
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1