Advertisement

东南大学数字信号处理实验_数字与信号处理实验1 离散时间信号分析

阅读量:

实验一 离散时间信号分析

一、实验目的

掌握两个序列的相加、相乘、移位、反褶、卷积等基本运算。

二、实验原理

1.序列的基本概念

离散时间信号在数学上可用时间序列5961e0815fdd8ba55a152c96db3927f0.png来表示,其中1f08cbbb11af514ad3463880f214d78c.png代表序列的第n个数字,n代表时间的序列,n的取值范围为d09f22fab5f086d5f009a38b23298506.png的整数,n取其它值1f08cbbb11af514ad3463880f214d78c.png没有意义。离散时间信号可以是由模拟信号通过采样得到,例如对模拟信号d6c2bb6f0c3b4f540ba85789bd61f0b7.png进行等间隔采样,采样间隔为T,得到556ccbf18517ce86bd0f2ce5de500594.png一个有序的数字序列就是离散时间信号,简称序列。

2.常用序列

常用序列有:单位脉冲序列(单位抽样)591dc967b5c999f5ad27ebfaaac7bcd9.png、单位阶跃序列04ae53548d521baabe787489732a1af9.png、矩形序列2544bbf75cd33275989903cc08ca6241.png、实指数序列、复指数序列、正弦型序列等。

3.序列的基本运算

序列的运算包括移位、反褶、和、积、标乘、累加、差分运算等。

4.序列的卷积运算
de3bb04c62dbb0e2210a902140e99163.png

上式的运算关系称为卷积运算,式中代表两个序列卷积运算。两个序列的卷积是一个序列与另一个序列反褶后逐次移位乘积之和,故称为离散卷积,也称两序列的线性卷积。其计算的过程包括以下4个步骤。

(1)反褶:先将0db7ff3ba47301bab534a29ae05bb9ce.png6d1e267acc1d74ff9045ce0244f0f99a.png的变量ff877dd118f2eb958e866d22f27cac63.png换成e5080ae5477dcba8bc3a4fb0509b0532.png,变成3ed1656a27bbcb9e3adc0b3072a45457.pngf0d4bb6bea55d34b2098831eee5c2ced.png,再将f0d4bb6bea55d34b2098831eee5c2ced.png以纵轴为对称轴反褶成3f26e315e5aa93aea92e9904bebf6827.png

(2)移位:将3f26e315e5aa93aea92e9904bebf6827.png移位a58745dd77f2fa4c584aa7a89c89f31e.png,得f2d1908ad99707532c002b29258f9d66.png。当ff877dd118f2eb958e866d22f27cac63.png为正数时,右移n位;当n为负数时,左移ff877dd118f2eb958e866d22f27cac63.png位。

(3)相乘:将f2d1908ad99707532c002b29258f9d66.png3ed1656a27bbcb9e3adc0b3072a45457.png的对应点值相乘。

(4)求和:将以上所有对应点的乘积累加起来,即得8b7caab99d5198539ec9023db257847a.png

三、主要实验仪器及材料

微型计算机、Matlab6.5 教学版、TC 编程环境。

四、实验内容

(1)用Matlab 或C语言编制两个序列的相加、相乘、移位、反褶、卷积等的程序;

(2)画出画出两个序列运算以后的图形;

(3)对结果进行分析;

(4)完成实验报告。

五、实验结果

1.常用序列

(1) 单位采样序列

1)新建脚本文件impseq.m

function y = impseq(n)

y = (n == 0)

2)在命令窗口输入:

n = -5:5;

x = drawBS(n);

stem(n, x, 'fill'), xlabel('n'), grid on;

title('单位采样序列')

axis([-5 5 -0.1 1.1])3)之后得如下图
a10a72f9f77f0bfdaf71ff31f8bbe0cb.png

(2)单位阶跃序列

1)新建脚本文件stepseq.m

function y=uDT(n)

y=n>=0

2)在命令窗口输入

n=-4:4;

x=stepseq(n);

stem(n,x,'fill'),xlabel('n'),grid on;

title(‘单位阶跃序列’)

axis([-4 4 -0.1 1.1])

3)得下图
9c78c39cea77801189760077b12ff364.png

(3)矩形序列

1)新建脚本文件 recseq.m

function y=recseq(n)

y=n>=0

2)在命令窗口输入:

n=-6:6;

x=recseq(n)-recseq(n-3);

stem(n,x,'fill'),xlabel('n'),grid on;

title(‘矩阵序列’)

axis([-6 6 -0.1 1.1])

3)后得下图
a7b26b69f4c8d44d8aff473e0e62fbf7.png

(4)指数序列

1)在命令行窗口输入

n=-5:5;

a1=1.7;a2=-1.7;a3=0.2;a4=-0.2;

x1=a1.n;x2=a2.n;x3=a3.n;x4=a4.n;

subplot(221);

stem(n,x1,'fill'),grid on;

xlabel('n');title('x(n)=1.7^n')

subplot(222);

stem(n,x2,'fill'),grid on;

xlabel('n');title('x(n)=(-1.7)^n')

subplot(223);

stem(n,x3,'fill'),grid on ;

xlabel('n');title('x(n)=0.2^n')

subplot(224);

stem(n,x4,'fill'),grid on;

xlabel('n');title('x(n)=(-0.2)^n')

2)得如下图
ea8303aba3e95d2b7ee5cf23f13a979b.png

(5)正弦序列

1)在命令窗口输入

n=-15:15;

x=sin(pi/5*n);

stem(n,x,'fill'),xlabel('n'),ylabel('x(n)'),grid on;

title('正弦序列')

axis([-10 10 -1.5 1.5])

2)后得如下图
8deaa6851bfd505dfbe67bdf91fd836c.png

2.序列间得基本运算

(1)单位采样与单位阶跃序列相加

1)在命令行窗口输入

n=-7:7;

x=impseq(n);

axis([-3 4 -0.5 1.5]);

x=stepseq(n)

axis([-8 8 -0.1 2.1]);

x=impseq(n)+stepseq(n);

stem(n,x,'fill'),xlabel('n'),grid on;

title('单位阶跃与单位采样序列求和')

2)后得下图
405ee23dcb5f42fe9c8fa2c76c9f08c1.png

(2)相乘

1)新建seqmult.m文件

function [y, n] = seqmult(x1, n1, x2, n2)

n = min( min(n1), min(n2) ):max( max(n1), max(n2) );

y1 = zeros(1,length(n)); y2 = y1;

y1( find( ( n >= min(n1) )&( n <= max(n1) ) == 1 ) ) = x1;

y2( find( ( n >= min(n2) )&( n <= max(n2) ) == 1 ) ) = x2;

y = y1 .* y2;

2)在命令行窗口输入

n1=-1:4;

n2=-2:5;

x1=[1,2,0,-1,-2,0];

x2=[-1,1,-1,0.8,0,-1,3,1];

[y,n]=seqmult(x1,n1,x2,n2);

subplot(221);

stem(n1,x1,'.');grid;xlabel('n1');ylabel('y1')

subplot(222)

stem(n2,x2,'');grid;xlabel('n2');ylabel('y2')

subplot(212);stem(n,y,'.');grid

title('两序列相乘后的图形');

xlabel('n');ylabel('y');

3)得到如下图形
5bccfb5843c5be58d0264c37d2b77503.png

(3)卷积

1)新建convwt.m文件

function [y, ny] = convwt(x, xn, h, hn)

y = conv(x, h);

yn1 = xn(1) + hn(1);

yn2 = xn(end) + hn(end);

ny = [yn1 : yn2];

2)在命令行窗口输入

x=[1,2,3,-1,-2];xn=-1:3;

h=[2,2,1,-1,4,-2];hn=-3:2

[y,yn]=convwt(x,xn,h,hn)

stem(yn,y,'fill');xlabel('n');ylabel('y(n)');grid on;

title('单位阶跃与单位采样信号的卷积');

3)得如下图
4158e17337563107f42113ae8a6bd26f.png

(4)移位

1)在命令窗口输入

n = -2:3;

x= stepseq(n) - stepseq(n + 1)

m = -n;

m1 = m -1;

subplot(211);

stem(m,x,'fill'),xlabel('n');grid on

title('移位之前的图片')

axis([-5 5 -3 3])

subplot(212);

stem(m1,x,'fill'),xlabel('n');grid on

title('移位之后的图片');

axis([-5 5 -3 3])

2)得如下图
7f7fec1c090c8f7c2a1dcb5a118bed3a.png

(5)反转

1)在命令行窗口输入

n = -3:3;

h= stepseq(n) - stepseq(n-2)

subplot(211);

stem(n,h,'fill'),xlabel('n');grid on

title('反转之前的图片')

axis([-4 4 -1 3])

m = -n;

subplot(212);

stem(m,h,'fill'),xlabel('m');grid on

title('反转之后的图片');

axis([-4 4 -1 3])

2)可得如下图
8060ed44560ec181832a42a685b1873c.png

六、实验总结

通过本次实验我学会了使用Matlab绘制基本的单位脉冲序列(单位抽样)、单位阶跃序列、矩形序列、实指数序列、复指数序列、正弦型序列等图像,学会了序列的基本运算如序列的相加、相乘、移位、反转、卷积等基本运算。

全部评论 (0)

还没有任何评论哟~