数学与软件科学学院 实验报告
学期:13至14 第_2学期 2014年4月7日
课程名称:数字信号处理 专业:信息与计算机科学 实验编号:6 实验项目:6 指导教师 姓名:
学号: 实验成绩: A
实验六 离散傅里叶变换
一、实验目的
(1) 了解离散傅里叶的定义;
(2) 通过实验掌握离散傅里叶变换后的幅度和相位特性; (3) 学会使用cirshif()函数。 二、实验内容
(1) 求DFT,设x(n)={1,0,1,1},计算x(n)的4点,8点DFT,画出x(k) 的幅度和相位特性曲线;
(2) 利用cirshif()函数实现循环移位,x(n)=0.8n,0<=n<=10,绘制y(n)=x(n+7)R(n); (3) 线性卷积和循环卷积的计算
已知x1(n)={1,2,3},长度N1=3,x2(n)={4,3,2,1},长度N2=4
①计算两序列的线性卷积;
②分别计算两序列的4,5,6,7,8点循环卷积(N>=N1+N2-1时,循环卷积等于
线性卷积)。 三、实验准备
安装MATLAB的 计算机系统。 四、实验步骤及结果
一>.求DFT,设x(n)={1,0,1,1},计算x(n)的4点,8点DFT,画出x(k) 的幅度和 相位特性曲线;
实验代码如下:
xn=[1 0 1 1]; xk4=fft(xn,4); xk8=fft(xn,8); magX1=abs(xk4); angX1=angle(xk4); magX2=abs(xk8); angX2=angle(xk8); subplot(2,2,1); stem(magX1,'.'); ylabel('幅度'); subplot(2,2,2); stem(angX1,'.'); ylabel('相位'); subplot(2,2,3); stem(angX2,'.');
ylabel('幅度'); subplot(2,2,4); stem(angX2,'.'); ylabel('相位');
运行后得到的图像如下:
二>.利用cirshif()函数实现循环移位,x(n)=0.8n,0<=n<=10,绘制y(n)=x(n+7)R(n);
实验代码如下:
a=0,b=-7; n=[0:10]; x=(0.8).^n; subplot(2,1,1); stem(n,x); xlabel('n'); ylabel('x(n)'); title('x=(0.8).^n'); y=circshift(x,[a,b]); subplot(2,1,2); stem(n,y); xlabel('n'); ylabel('y(n)');
title('y=x(n+7)R(n)');
程序运行后得到的图像如下所示:
三>.已知x1(n)={1,2,3},长度N1=3,x2(n)={4,3,2,1},长度N2=4
①计算两序列的线性卷积;
实验代码:
xn1=[1,2,3]; xn2=[4,3,2];
yn=conv(xn1,xn2); stem(yn);
xlabel('序列长度'); ylabel('yn=xn1*xn2'); title('线性卷积');
运行后得到的结果为:
②分别计算两序列的4,5,6,7,8点循环卷积(N>=N1+N2-1时,循环卷积等
于线性卷积)。
编写的实验代码如下:
xn1=[1,2,3]; xn2=[4,3,2,1];
yn1=circonv(xn1,xn2,4); subplot(2,3,1) stem(yn1); xlabel('n1=4'); ylabel('yn1');
yn2=circonv(xn1,xn2,5); subplot(2,3,2) stem(yn2); xlabel('n2=5'); ylabel('yn2');
yn3=circonv(xn1,xn2,6); subplot(2,3,3) stem(yn3); xlabel('n3=6'); ylabel('yn3');
yn4=circonv(xn1,xn2,7); subplot(2,3,4) stem(yn4); xlabel('n4=7'); ylabel('yn4');
yn5=circonv(xn1,xn2,8); subplot(2,3,5) stem(yn5); xlabel('n5=8'); ylabel('yn5');
运行后的结果为: