数字信号处理第三次实验代码及波形图

数字信号处理第三次实验

一、实验目的:

1、掌握离散时间系统的DFT 的MATLAB 实现;

2、熟悉DTFT 和DFT 之间的关系。

3、了解信号不同变形的DFT 与原信号DFT 之间的关系

二、实验内容:

1.开发一个时域圆周移位的matlab 函数cirshift.m 并测试:设x(n)=[9 8 7 6 5 4 3],求x((n-4))8R 8(n)以及x((n+5))8R 8(n)。

function y=cirshift(x,m,N)

%长度为N 的x 序列(时域)作m 点圆周位移

%-------------------------------------

%[y]=cirshift(x,m,N)

%y=包含圆周位移的输出序列

%x=长度

%m=移位样点数

%N=圆周缓冲器长度

%方法:y(n)=x((n-m)mod N)

%check for length of x

if length(x)>N

error('N 必须>=x的长度' )

end

x=[x zeros(1,N-length(x))];%将x 补零到长度为N

n=[0:1:N-1];

n=mod(n-m,N);

y=x(n+1);

%主函数.m

clc;clear all ;

x=[9 8 7 6 5 4 3];

y1=cirshift(x,4,8);

y2=cirshift(x,-5,8);

2. 开发一个圆周翻转的matlab 函数cirflip.m 并测试:设x(n)=[9 8 7 6 5 4 3 2 1],求x(n)的16点圆周翻转x((-n))16R 16(n)。

function y=cirfilp(x,N)

nx=[0:1:N-1];

y=x(mod(-nx,N)+1);

%主函数.m

clc;clear all ;

x=[9 8 7 6 5 4 3 2 1];

N=16;

x=[x zeros(1,N-length(x))];

nx=0:N-1;

y=cirfilp(x,16);

subplot(121),stem([0:N-1],x);title(' 原序列' );

xlabel('n' );ylabel('x(n)');grid;

subplot(122),stem([0:N-1],y);title(' 圆周翻褶序列' );

xlabel('n' );ylabel('x((n))16r16(n)');grid;

3. 开发一个分解圆周奇偶对称序列的matlab 函数cirevod.m 并测试:设x(n)=[9 8 7 6 5 4 3 2 1],将x(n)分解圆周奇偶对称序列x ep (n) 、x op (n)。

function [xep,xop]=circevod(x)

%将实序列分解为圆周偶和圆周奇两部分

%------------------------------------

%[xep,xop]=circevod(x)

if any(imag(x)~=0)

error('x 非实序列' )

end

N=length(x);

n=0:N-1;

xep=0.5*(x+x(mod(-n,N)+1));

xop=0.5*(x-x(mod(-n,N)+1));

%主函数.m

x=[9 8 7 6 5 4 3 2 1];

[xep,xop]=circevod(x);

4. 开发一个实现DFT 矩阵的函数wN=dftmtx(N)并测试N=4,8,16的DFT 矩阵,在此基础上寻求IDFT 矩阵wNI 的编程方法并测试N=4,8,16的IDFT 矩阵

%这是matlab 自带的函数 命令行输入type+dftmtx可查看源代码。

function D = dftmtx(n)

n = signal.internal.sigcasttofloat(n,'double' , 'dftmtx' , 'N' , ... 'allownumeric' );

D = fft(eye(n));

命令行输入:

wN=dftmtx(N);

wNI=conj(dftmtx(N))/N

DFT

N=4

N=8

N=16

IDFT :

N=4

N=8

N=16

5. 自编工具函数XK=dft(xn,N)实现DFT 以及IDFT ,并测试x(n)=[9 8 7 6 5 4 3 2 1]的DFT 。

function [Xk]=dft(xn,N)

n=[0:1:N-1];

k=n;

WN=exp(-j*2*pi/N);

nk=n'*k;

WNnk=WN.^(nk);

Xk=xn*WNnk;

%主函数

xn=[9 8 7 6 5 4 3 2 1]

y=dft(x,9);

function [Xk]=idft(xn,N)

n=[0:1:N-1];

k=n;

WN=exp(-j*2*pi/N);

nk=n'*k;

WNnk=WN.^(-nk);

Xk=(xn*WNnk)/N;

6. 开发一个圆周卷积计算的matlab 函数y=circonvt(x1,x2,N),并测试x1(n)=[1 2 3 4 9], x2=[7 6 5 4 3 2 1],求8点圆周卷积。

function y=circonvt(x1,x2,N)

if length(x1)>N

error('N 必须>=x1的长度' ) end

if length(x2)>N

error('N 必须>=x2的长度' ) end

x1=[x1 zeros(1,N-length(x1))]; x2=[x2 zeros(1,N-length(x2))]; m=[0:1:N-1]; x2=x2(mod(-m,N)+1); H=zeros(N,N);

for n=1:1:N

H(n,:)=cirshift(x2,n-1,N); end

y=x1*H';

%test.6

x1=[1 2 3 4 9];

x2=[7 6 5 4 3 2 1];

y=circonvt(x1,x2,8);

7. 教材P212 习题3.36.

余弦频率是正弦频率的两倍,故正弦周期是预先周期的两倍。T=0.5s 抽样间隔T=0.01s,故N=50;

clear all ;clc;

N=50;

n=[0:1:N-1];

k=n;

xn=2*sin(0.04*pi*n)+5*cos(0.08*pi*n);

WN=exp(-j*2*pi/N);

nk=n'*k;

WNnk=WN.^(nk);

Xk=xn*WNnk;

magX=abs(Xk);

angX=angle(Xk);

subplot(121);stem(k,magX,'.' );grid;

xlabel('k' );title(' 幅度谱曲线' );ylabel('X(k)');

subplot(122);stem(k,angX,'.' );grid;

xlabel('k' );title(' 相位谱曲线' );ylabel(' 弧度' );

因为抽样频率不变,要增大N 才能减少谱泄露,故N=99; clear all ;clc;

N=99;

n=[0:1:N-1];

k=n;

xn=2*sin(0.04*pi*n)+5*cos(0.08*pi*n); WN=exp(-j*2*pi/N);

nk=n'*k;

WNnk=WN.^(nk);

Xk=xn*WNnk;

magX=abs(Xk);

angX=angle(Xk);

subplot(121);stem(k,magX,'.' );grid;

xlabel('k' );title(' 幅度谱曲线' );ylabel('X(k)'); subplot(122);stem(k,angX,'.' );grid;

xlabel('k' );title(' 相位谱曲线' );ylabel(' 弧度' );

数字信号处理第三次实验

一、实验目的:

1、掌握离散时间系统的DFT 的MATLAB 实现;

2、熟悉DTFT 和DFT 之间的关系。

3、了解信号不同变形的DFT 与原信号DFT 之间的关系

二、实验内容:

1.开发一个时域圆周移位的matlab 函数cirshift.m 并测试:设x(n)=[9 8 7 6 5 4 3],求x((n-4))8R 8(n)以及x((n+5))8R 8(n)。

function y=cirshift(x,m,N)

%长度为N 的x 序列(时域)作m 点圆周位移

%-------------------------------------

%[y]=cirshift(x,m,N)

%y=包含圆周位移的输出序列

%x=长度

%m=移位样点数

%N=圆周缓冲器长度

%方法:y(n)=x((n-m)mod N)

%check for length of x

if length(x)>N

error('N 必须>=x的长度' )

end

x=[x zeros(1,N-length(x))];%将x 补零到长度为N

n=[0:1:N-1];

n=mod(n-m,N);

y=x(n+1);

%主函数.m

clc;clear all ;

x=[9 8 7 6 5 4 3];

y1=cirshift(x,4,8);

y2=cirshift(x,-5,8);

2. 开发一个圆周翻转的matlab 函数cirflip.m 并测试:设x(n)=[9 8 7 6 5 4 3 2 1],求x(n)的16点圆周翻转x((-n))16R 16(n)。

function y=cirfilp(x,N)

nx=[0:1:N-1];

y=x(mod(-nx,N)+1);

%主函数.m

clc;clear all ;

x=[9 8 7 6 5 4 3 2 1];

N=16;

x=[x zeros(1,N-length(x))];

nx=0:N-1;

y=cirfilp(x,16);

subplot(121),stem([0:N-1],x);title(' 原序列' );

xlabel('n' );ylabel('x(n)');grid;

subplot(122),stem([0:N-1],y);title(' 圆周翻褶序列' );

xlabel('n' );ylabel('x((n))16r16(n)');grid;

3. 开发一个分解圆周奇偶对称序列的matlab 函数cirevod.m 并测试:设x(n)=[9 8 7 6 5 4 3 2 1],将x(n)分解圆周奇偶对称序列x ep (n) 、x op (n)。

function [xep,xop]=circevod(x)

%将实序列分解为圆周偶和圆周奇两部分

%------------------------------------

%[xep,xop]=circevod(x)

if any(imag(x)~=0)

error('x 非实序列' )

end

N=length(x);

n=0:N-1;

xep=0.5*(x+x(mod(-n,N)+1));

xop=0.5*(x-x(mod(-n,N)+1));

%主函数.m

x=[9 8 7 6 5 4 3 2 1];

[xep,xop]=circevod(x);

4. 开发一个实现DFT 矩阵的函数wN=dftmtx(N)并测试N=4,8,16的DFT 矩阵,在此基础上寻求IDFT 矩阵wNI 的编程方法并测试N=4,8,16的IDFT 矩阵

%这是matlab 自带的函数 命令行输入type+dftmtx可查看源代码。

function D = dftmtx(n)

n = signal.internal.sigcasttofloat(n,'double' , 'dftmtx' , 'N' , ... 'allownumeric' );

D = fft(eye(n));

命令行输入:

wN=dftmtx(N);

wNI=conj(dftmtx(N))/N

DFT

N=4

N=8

N=16

IDFT :

N=4

N=8

N=16

5. 自编工具函数XK=dft(xn,N)实现DFT 以及IDFT ,并测试x(n)=[9 8 7 6 5 4 3 2 1]的DFT 。

function [Xk]=dft(xn,N)

n=[0:1:N-1];

k=n;

WN=exp(-j*2*pi/N);

nk=n'*k;

WNnk=WN.^(nk);

Xk=xn*WNnk;

%主函数

xn=[9 8 7 6 5 4 3 2 1]

y=dft(x,9);

function [Xk]=idft(xn,N)

n=[0:1:N-1];

k=n;

WN=exp(-j*2*pi/N);

nk=n'*k;

WNnk=WN.^(-nk);

Xk=(xn*WNnk)/N;

6. 开发一个圆周卷积计算的matlab 函数y=circonvt(x1,x2,N),并测试x1(n)=[1 2 3 4 9], x2=[7 6 5 4 3 2 1],求8点圆周卷积。

function y=circonvt(x1,x2,N)

if length(x1)>N

error('N 必须>=x1的长度' ) end

if length(x2)>N

error('N 必须>=x2的长度' ) end

x1=[x1 zeros(1,N-length(x1))]; x2=[x2 zeros(1,N-length(x2))]; m=[0:1:N-1]; x2=x2(mod(-m,N)+1); H=zeros(N,N);

for n=1:1:N

H(n,:)=cirshift(x2,n-1,N); end

y=x1*H';

%test.6

x1=[1 2 3 4 9];

x2=[7 6 5 4 3 2 1];

y=circonvt(x1,x2,8);

7. 教材P212 习题3.36.

余弦频率是正弦频率的两倍,故正弦周期是预先周期的两倍。T=0.5s 抽样间隔T=0.01s,故N=50;

clear all ;clc;

N=50;

n=[0:1:N-1];

k=n;

xn=2*sin(0.04*pi*n)+5*cos(0.08*pi*n);

WN=exp(-j*2*pi/N);

nk=n'*k;

WNnk=WN.^(nk);

Xk=xn*WNnk;

magX=abs(Xk);

angX=angle(Xk);

subplot(121);stem(k,magX,'.' );grid;

xlabel('k' );title(' 幅度谱曲线' );ylabel('X(k)');

subplot(122);stem(k,angX,'.' );grid;

xlabel('k' );title(' 相位谱曲线' );ylabel(' 弧度' );

因为抽样频率不变,要增大N 才能减少谱泄露,故N=99; clear all ;clc;

N=99;

n=[0:1:N-1];

k=n;

xn=2*sin(0.04*pi*n)+5*cos(0.08*pi*n); WN=exp(-j*2*pi/N);

nk=n'*k;

WNnk=WN.^(nk);

Xk=xn*WNnk;

magX=abs(Xk);

angX=angle(Xk);

subplot(121);stem(k,magX,'.' );grid;

xlabel('k' );title(' 幅度谱曲线' );ylabel('X(k)'); subplot(122);stem(k,angX,'.' );grid;

xlabel('k' );title(' 相位谱曲线' );ylabel(' 弧度' );


相关内容

  • 光纤通信实验指导书
  • 光纤通信实验指导书 (2011年试用版) 广东石油化工学院计算机与电子信息学院2011年9月 目 录 前言 „„„„„„„„„„„„„„„„„„„„„„„„„„3 实验一 实验二 实验三 实验四 附页 数字基带信号实验 „„„„„„„„„„„„„„„4 数字信号电光.光电转换传输实验 „„„„„„„ ...

  • 简易DDS频率合成器设计
  • 目 录 第一章 系统分析与设计方案 ............................................................................................................ 1 1.1 DDS设计原理介绍 ....... ...

  • 码型变换实验
  • 通信原理实验报告 码型变换实验 学生姓名陈建 指导老师冯陈伟 专业班级 学号 实验时间 实验成绩 一. 实验目的 1. 了解几种常用的数字基带信号. 2. 掌握常用数字基带传输码型的编码规则. 3. 掌握常用CPLD实现码型变换的方法. 二. 实验内容 1.观察NRZ码,RZ码,AMI码,HDB3码 ...

  • AMI码型变换实验报告
  • 实验一 AMI码型变换实验 一.实验目的 1. 了解几种常用的数字基带信号的特征和作用. 2. 掌握AMI码的编译规则. 3. 了解滤波法位同步在的码变换过程中的作用. 二.实验器材 1. 主控&信号源.2号.8号.13号模块各一块 2. 双踪示波器一台 3. 连接线若干 三.实验原理 1. ...

  • 数字逻辑电路设计实验指导书
  • 数字逻辑电路设计实验指导书 实验一 半加器和全加器I 实验平台 实验要求 使用TTL 小规模集成电路芯片74LS00搭建半加器电路和全加器电路,电路的输入接实验平台开关,电路输出接实验平台的发光管.希望同学们能够通过实验掌握使用基本门电路设计实现数字电路的方法. 实验原理 在数字电路中,门电路就是用 ...

  • 北邮数电综合实验报告
  • 点阵赛车游戏 学院:信息与通信工程学院专业:通信工程 班级: 姓名: 学号: 班内序号: 一. 设计课题的任务要求 用8×8点阵进行5秒倒计时显示,当5秒倒计时结束后,点阵显示赛道和赛车的初始位置,赛车游戏开始,并开始计时,用两个数码管显示时间.用红色表示赛道,黄色表示赛车的初始位置,箭头表示赛车行 ...

  • 数字系带传输系统的相关知识哦
  • 一 .课程题目 数字基带传输系统:欲传送的01比特流+码型变换(HDB3码)+基带成型网络(采用升余弦滚降系统)+信道+码型反变换+01比特流. 二.设计要求 1. 完成一个题目. 2. 对通信系统有整体的较深入的理解. 3. 提出仿真方案. 4. 完成仿真软件的编制. 5. 仿真软件的演示. 6. ...

  • 低通滤波器
  • 实验名称:FIR 低通滤波器的DSP 实现 一.实验目的 1.掌握用窗函数法设计FIR 数字滤波器的原理和方法. 2.熟悉线性相位FIR 数字滤波器的特性. 3.了解各种窗函数对数字滤波器的特性的影响. 二.实验设备 PC 兼容机一台(操作系统为Windows XP ),安装Code Compose ...

  • 简易函数信号发生器设计
  • 单片机原理及接口技术课程设计(论文) 题目: 简易函数信号发生器设计 院(系): 专业班级: 学 号: 学生姓名: 指导教师: (签字) 起止时间: 2015.6.22-2015.7.3 课程设计(论文)任务及评语 院(系):电气工程学院 教研室:自动化 注:成绩:平时20% 论文质量60% 答辩2 ...