数字信号处理实验报告 2.docx
- 文档编号:24552402
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:13
- 大小:157.56KB
数字信号处理实验报告 2.docx
《数字信号处理实验报告 2.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验报告 2.docx(13页珍藏版)》请在冰豆网上搜索。
数字信号处理实验报告2
实验报告
学院(系)名称:
计算机与通信工程学院
姓名
学号
专业
班级
实验项目
实验二离散傅里叶变换及性质
课程名称
数字信号处理
课程代码
实验时间
2013年06月17日
实验地点
主校区计算机基础实验室
批改意见
成绩
教师签字:
一,实验目的
(1)通过本实验的练习,了解离散时间信号时域运算的基本实现方法。
(2)了解相关函数的调用格式及作用。
(3)通过本实验,掌握离散傅里叶变换的原理及编程思想。
二,实验原理
对于离散序列,存在着两种傅里叶变换——离散时间傅里叶变换(DTFT)和离散傅里叶变换(DFT)。
DTFT用以求出离散信号的连续频谱,它仅在时域上离散而在频域上是一个连续的;DFT用以求出连续频谱上的离散样本点,所以其在时域和频域上都是离散的。
对于一个离散序列
,它的离散时间傅里叶变换(DTFT)的定义为:
离散时间傅里叶变换收敛的充分条件是
绝对可加,即
利用离散快速傅里叶变换函数计算傅里叶计算傅里叶变换。
MATLAB提供了内部函数来快速地进行离散傅里叶变换(DFT)和逆变换(IDFT)的计算,如下所列。
,
,
,
(1)
:
计算L点的DFT,L为序列
的长度,即
。
(2)
:
计算N点的DFT。
N为指定采用的点数,当
,则程序会自动给
后面补
个零点;如果
,则程序会自动截断
,取前N个数据。
(3)
:
计算
点的IDFT,L为序列
的长度,即
。
(4)
:
计算N点的IDFT,N为指定采用的点数,当
,则程序会自动给
后面补
个零点;如果
,则程序会自动截断
,取前N个数据。
三,实验内容
1.离散时间傅里叶变换DTFT
【例3-1-1】求有限长序列
的DTFT,画出它的幅值谱、相位谱、实部和虚部。
MATLAB程序如下:
clf;
x=[1,2,3,4,5];nx=[-1:
3]
w=linspace(0,2*pi,512);
H=x*exp(-j*nx'*w);
subplot(2,2,1);plot(w,abs(H));ylabel('幅度');gridon;%画幅度特性曲线
subplot(2,2,2);plot(w,angle(H));ylabel('相角');gridon;%画相位特性曲线
subplot(2,2,3);plot(w,real(H));ylabel('实部');gridon;%画幅度实部特性曲线
subplot(2,2,4);plot(w,imag(H));ylabel('虚部');gridon;%画幅度虚部特性曲线
set(gcf,'color','w');
程序运行的结果如图1所示
图1
2.离散傅里叶变换DFT
【例3-1-2】对于离散序列
,求出它的20点和23点的离散傅里叶变换的幅值谱。
MATLAB程序如下:
k=5;
n1=[0:
0.75:
19];x1=cos(2*pi*n1/k);xk1=abs(fft(x1));
n2=[0:
0.75:
22];x2=cos(2*pi*n2/k);xk2=abs(fft(x2));
subplot(2,2,1);plot(n1,x1);
xlabel('n');ylabel('x1(n)');gridon;
subplot(2,2,2);stem(n1,xk1);
xlabel('k');ylabel('X1(k)');gridon;
subplot(2,2,3);plot(n2,x2);
axis([0,22,-1,1]);xlabel('n');ylabel('x2(n)');gridon;
subplot(2,2,4);stem(n2,xk2);
axis([0,22,0,10]);xlabel('k');ylabel('X2(k)');gridon;
set(gca,'XTickMode','manual','XTick',[0,5,10,15,22])
set(gcf,'color','w');
离散傅里叶变换及其快速计算结果如图2所示
图2
从图2中可以看出,只有序列的20点的傅里叶变换得到的频谱图是单一谱线。
这是由于序列的周期是5,而20是5的整数倍,所以得到了单一谱线的频谱图,而23则选取了4个半周期,即出现了频谱的泄露,所以得不到单一谱线的频谱图。
3.离散傅里叶变换DFT的性质
(1)时移性质
【例3-1-3】将序列
右移10位,观察它的幅值谱和相位谱的变化。
MATLAB的程序如下:
clf;
w=-pi:
2*pi/511:
pi;
d=10;
x1=[2,1,-1,8,6,-2,-4,9,-3];
xk1=abs(freqz(x1,1,w));
omegal=angle(freqz(x1,1,w));
x2=[zeros(1,d),x1];
xk2=abs(freqz(x2,1,w));
omega2=angle(freqz(x2,1,w));
subplot(2,2,1);plot(w/pi,xk1);
gridon;title('原始序列的幅值谱');
subplot(2,2,2);plot(w/pi,xk2);
gridon;title('时移序列的幅值谱');
subplot(2,2,3);plot(w/pi,omegal);
gridon;title('原始序列的相位谱');
subplot(2,2,4);plot(w/pi,omega2);
gridon;title('时移序列的相位谱');
set(gcf,'color','w');
离散傅里叶变换的时移性质如图3所示
图3
(2)频移性质
【例3-1-4】将序列
的频谱向右移9位,观察它的频移序列的幅值谱和相位谱。
MATLAB的程序如下:
clf;
w=-pi:
2*pi/511:
pi;
deltaw=0.4*pi;
x1=[2,1,-1,8,6,-2,-4,9,-3];
xk1=abs(freqz(x1,1,w));
omegal=angle(freqz(x1,1,w));
L=length(x1);
n=0:
L-1;
x2=exp(deltaw*i*n).*x1;
xk2=abs(freqz(x2,1,w));
omega2=angle(freqz(x2,1,w));
subplot(2,2,1);plot(w/pi,xk1);
gridon;title('原始序列的幅值谱');
subplot(2,2,2);plot(w/pi,xk2);
gridon;title('频移序列的幅值谱');
subplot(2,2,3);plot(w/pi,omegal);
gridon;title('原始序列的相位谱');
subplot(2,2,4);plot(w/pi,omega2);
gridon;title('频移序列的相位谱');
set(gcf,'color','w');
离散傅里叶变换的频移性质如图4所示
图4
(3)循环卷积性质
【例3-1-5】已知序列
,
,求解
和
的13点循环卷积序列
,对比循环卷子序列
与积序列
的幅值和相位谱。
MATLAB程序如下:
clf;
w=-pi:
2*pi/512:
pi;
N=13;
x=[1,3,7,-3,-4,5,-2,6,1];
x=[x,zeros(1,N-length(x))];
h=[1,-2,3,-2,1];
h=[h,zeros(1,N-length(h))];
m=[0:
N-1];
hm=h(mod(-m,N)+1);
H=toeplitz(hm,[0,h(2:
N)]);
y=x*H;
[xk,w]=freqz(x,1,512,'whole');
[hk,w]=freqz(h,1,512,'whole');
[yk,w]=freqz(y,1,'whole');
yk1=xk.*hk;
subplot(2,2,1);plot(w/pi,abs(yk));
gridon;title('卷积序列的幅值谱');
subplot(2,2,2);plot(w/pi,abs(yk1));
gridon;title('序列积的幅值谱');
subplot(2,2,3);plot(w/pi,angle(yk));
gridon;title('卷积序列的相位谱');
subplot(2,2,4);plot(w/pi,angle(yk1));
gridon;title('序列积的相位谱');
set(gcf,'color','w');
离散傅里叶变换的循环卷积性质如图5所示
图5
四,实验代码实验结果
已知序列
,
。
试设计实验,观察这两个序列的15点循环卷积序列的幅值谱和相位谱。
(1)MATLAB程序如下:
n=-10:
0.5:
10;
xn=cos(2*pi*n/5);
xk1=fft(xn,20);
xk2=fft(xn,23);
subplot(2,1,1);
stem(abs(xk1));
subplot(2,1,2);
stem(abs(xk2));
生成信号如下:
图6
(2)MATLAB程序如下:
w=-pi:
2*pi/512:
pi;
n=15;
x=[1,2,3,4,5,6,7,8,9];
x=[x,zeros(1,n-length(x))];
h=[1,2,-3,-1,0,2,-2];
h=[h,zeros(1,n-length(h))];
m=[0:
n-1];
hm=h(mod(-m,n)+1);
H=toeplitz(hm,[0,h(2:
n)]);
y=x*H;
[xk,w]=freqz(x,1,512,'whole');
[hk,w]=freqz(h,1,512,'whole');
[yk,w]=freqz(y,1,'whole');
yk1=xk.*hk;
subplot(2,2,1);plot(w/pi,abs(yk));
gridon;
subplot(2,2,2);plot(w/pi,abs(yk1));
gridon;
subplot(2,2,3);plot(w/pi,angle(yk));
gridon;
subplot(2,2,4);plot(w/pi,angle(yk1));
gridon;
set(gcf,'color','w');
生成信号如下:
图7
五,实验预习要求
(1)预习实验原理
(2)熟悉实验程序
(3)思考程序设计实验部分程序的编程
六,实验报告要求
(1)在MATLAB中输入程序,验证实验结果,并将实验结果存入指定存储区域中。
(2)对于程序设计实验,要求通过对验证性实验的练习,自行编制完整的实验程序,实现对信号的模拟,并得到实验结果。
(3)在实验报告中写出完整的自编程序,并给出实验结果。
七,思考题
(1)DFT和DTFT有哪些不同以及有哪些关系?
从前者如何求出后者或由后者如何求出前者?
答:
DFT:
时间和频率都离散,可在计算机中处理
DTFT:
时间离散,频率连续
(2)归纳DFT的主要特性,并与DTFT进行对比。
答:
一个N点离散时间序列的傅里叶变换(DTFT)所的频谱是以(2*pi)为周期进行延拓的连续函数,由采样定理知道,时域进行采样,则频域周期延拓;同理,如果在频域进行采样,则时域也会周期延拓。
离散傅里叶变换(DFT)就是基于这个理论,在频域进行采样,一个周期内采N个点(与序列点数相同),从而将信号的频谱离散化,得到一的重要的对应关系:
一个N点的离散时间信号可以用频域内一个N点序列来唯一确定,这就是DFT表达式所揭示的内容。
DTFT是离散时间傅立叶变换,它用于离散非周期序列分析,根据连续傅立叶变换要求连续信号在时间上必须可积这一充分必要条件,那么对于离散时间傅立叶变换,用于它之上的离散序列也必须满足在时间轴上级数求和收敛的条件;由于信号是非周期序列,它必包含了各种频率的信号,所以DTFT对离散非周期信号变换后的频谱为连续的,即有时域离散非周期对应频域连续周期的特点。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号处理实验报告 数字信号 处理 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)