数字信号处理实验报告-西工大
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字信号处理实验报告
班级:11021302 姓名:蔡欣麟学号:2013302736、
实验一
实验目的
(1)巩固并进一步加深对阶跃响应,单位抽样响应,幅频响应,相频响应以及Parseval定理的理解。
(2)学习并熟练掌握用FFT对连续信号和时域离散信号进行谱分析的方法。
实验内容
2.17 给定系统H(Z)=−0.2Z/(Z2+0.8)。
(1)求出并绘出H(Z)的幅频响应与相频响应;
(2)求出并绘出该系统的单位抽样响应h(n);
(3)令x(n)=u(n),求出并绘出系统的单位阶跃响应。
3.22关于正弦信号抽样的实验研究。
给定信号x(t)=sin(2πf0t),f0=50Hz,现对x(t)抽样,设抽样点数N=16。我们知道正弦信号x(t)的频谱是在±f0处的δ函数,将x(t)抽样变成x(n)后,若抽样频率及数据长度N取得合适,那么x(n)的DFT 也应是在±50Hz处的δ函数。由Parseval定理,有
E t=∑x2(n)=
N−1
n=02
N
|X50|2=E f
X50表示x(n)的DFTX(k)在50Hz处的谱线,若上式不成立,说明X(k)在频域有泄漏。给定下述抽样频率:(1)f s=100Hz;(2)f s=150Hz;(3)f s=200Hz。试分别求出x(n)并计算其X(k),然后用Parseval 定理研究其泄露情况,请观察得到的x(n)及X(k),总结对正弦信号抽样应掌握的原则。
3.23对上机习题3.22,当去取f s=200Hz,N=16时,在抽样点后再补N个零得x′(n),这时x′(n)是32点序列,求x′(n)的DFTX′(k),分析对正弦信号补零的影响。
程序设计
习题2.17:
x=ones(100);
t=1:100;
b=[0,-0.2,0];
a=[1,0,0.8];
[h,t1]=impz(b,a,40);%求单位抽样响应
y=filter(b,a,x);%求阶跃响应
[H,w]=freqz(b,a,256,'whole',1);
Hr=abs(H);%求幅频响应
Hphase=angle(H);
Hphase=unwrap(Hphase);%求相频响应
习题3.22:
f0=50;%固有频率
fs=100:50:200;%抽样频率
N=16;%数据个数
for q=1:3
Et(q)=0;%初始化时域能量
for k=1:N
x(k)=sin(2*pi*f0*(k-1)/fs(q));%计算x(n)
Et(q)=Et(q)+x(k)^2;%计算时域能量
end
X=fft(x,N);%计算DFT
X=abs(X);%得到X(k)
Ef(q)=2*(X(round(N*f0/fs(q))+1)^2)/N;%计算Ef
fprintf('当fs=%dHZ时',fs(q));%输出抽样频率if max(x)>1e-6%判断x(k)是否恒等于0
if Et(q)-Ef(q)>1e-6%判断能量是否守恒
disp('泄漏');
else
disp('不泄漏');
end
else
disp('抽样无意义');
end
end
习题3.23:
N=16;%数据个数
for k=1:N
x(k)=sin(2*pi*f0*(k-1)/fs);%计算x(n) end
t=0:N-1;
X=fft(x,N);%计算x(n)的DFT
X=abs(X);%得到X(k)
x1=[x,zeros(1,N)];%信号补零得到x1(n) t1=0:2*N-1;
X1=fft(x,2*N);%计算x1(n)的DFT
X1=abs(X1);%得到X1(k)
实验结果
习题2.17
习题3.22
习题3.23
实验二
实验目的
(1)进一步加深DFT算法原理和基本性质的理解:包括能量守恒,循环卷积。
(2)熟悉FFT程序结构及编程方法。学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。
实验内容
(1)编程实现快速傅里叶算法。
(2)已知序列x(n)=2sin(πn/3)+3cos(0.25πn),0≤n≤127,试绘制x(n)及用自己的快速傅里叶算法和matlab现有算法分别实现它的离散傅里叶变换谱图。
(3)验证能量守恒定理,并用DFT计算线性卷积:h(n)={0,1,2,1,1} 程序设计
(1)选取时间抽取(DIT)基2快速傅里叶算法。程序如下:function y=fft1(x,n)
m=log2(n);
x1=bin2dec(fliplr(dec2bin([1:n]-1,m)))+1; %求1:2^m数列的倒序
y=x(x1);%将x倒序排列作为y的初始值
for l=1:m
N=2^l;%计算蝶形运算的跨越间隔
u=1; %初始旋转因子为1
W=exp(-1i*2*pi/N); %计算基本DFT因子W
for j=1:N/2%本次跨越间隔内的各次蝶形运算
for k=j:N:n %本次蝶形运算的跨越间隔为N=2^l
p=k+N/2; %确定蝶形运算的对应单元下标
t=y(p)*u; %蝶形运算的乘法项
y(p)=y(k)-t; %蝶形运算的加法项