数字信号处理实验一
实验目的:掌握利用Matlab产生各种离散时间信号,实现信号的相加、相乘及卷积运算
实验函数:参考课本77-19页,注意式(2.11.1)的表达与各matlab子函数间的关系。turkey
1、stem(x,y) % 绘制以x为横轴,y为纵轴的离散序列图形
2、[h ,t] = impz(b, a) % 求解数字系统的冲激响应establishesh,取样点数为缺省值
[h, t] = impz(b, a, n) % 求解数字系统的冲激响应h少儿英语培训费用,取样点数为n
impz(b, a) % 在当前窗口用stem(t, h)函数出图
3、[h ,t] = dstep(b, a) % 求解数字系统的阶跃响应h,取样点数为缺省值
[h, t] = dstep (b, a, n) % 求解数字系统的阶跃响应h,取样点数为n
dstep (b, a) % 在当前窗口用stairs(t, h)函数出图
4、y = filter(b,a,x) % 在已知系统差分方程或转移函数的情况下求系统输出
实验原理:
一、常用的时域离散信号及其程序
1、产生单位抽样函数δ(n)
n1 = -5;
n2 = 5;
n0 = 0;
n = n1:n2;
x = [n==n0]; % x在n=n0时为1,其余为0
stem(n,x,'filled'); %filled:序列圆心处用实心圆表示
axis([n1,n2,0,1.1*max(x)])
title('单位抽样序列')
xlabel('time(n)')
ylabel('Amplitude:x(n)')
2、产生单位阶跃序列u(n)
n1 = -2;
n2 = 8;
n0 = 0;
n = n1:n2;
x = [n>=n0]; % x在n>=n0时为1,其余为0
stem(n,x,'filled');
axis([n1,n2,0,1.1*max(x)])
title('单位阶跃序列')
xlabel('time(n)')
ylabel('Amplitude:x(n)')
3、复指数序列
复指数序列的表示式为,当时,为实指数序列;当时,为虚指数序列,即,即其实部为余弦序列,虚部为正弦序列。
产生、复指数连续信号与离散序列的Matlab程序如下:
n1 = 30;
sigma = -0.1;
omega = 0.6;
n = 0:n1;
x = exp((sigma+i*omega)*n);
subplot(2,2,1),plot(n,real(x));
title('复指数信号的实部')
subplot(2,2,3),stem(n,real(x),'filled');
title('复指数序列的实部')
subplot(2,2,2),plot(n,imag(x));
title('复指数信号的虚部')
subplot(2,2,4),stem(n,imag(x),'filled');
title('复指数序列的虚部')
4、正(余)弦序列
鸨母正(余)弦序列的表示式为。
已知一时域周期性正弦信号的频率为1Hz,振幅值幅度为1V。在窗口上显示两个周期的信号波形,并对该信号的一个周期进行32点采样获得离散信号。试显示原连续信号和其采样获得的离散信号波形。Matlab程序如下:
f = 1;
Um = 1;
nt = 2;六一讲话稿
N = 32;
T = 1/f;
听力材料dt = T/N;
n = 0:nt*N-1;
tn = n*dt;
x = Um*sin(2*f*pi*tn);
subplot(2,1,1),plot(tn,x);
title('连续时间正弦信号和离散正弦序列')
ylabel('x(t)')
knee
subplot(2,1,2),stem(tn,x);采样点越多那么采样间隔时间dt越短,信号频率f越大,采样频率也就越大
ylabel('x(n)')
5、sinc函数
求,Matlab程序如下:
n = -20:20;
f = sinc(n/4);
subplot(2,1,1),plot(n,f);
title('sinc信号')
subplot(2,1,2),stem(n,f);
title('sinc序列')
二、离散序列的基本运算
离散序列的时域运算包括信号的相加、相乘,信号的时域变换包括信号的移位、反折、倒相以及信号的尺度变换等。在Matlab中,离散序列的相加、相乘等运算时两个向量之间的运算,因此参加运算的两个序列向量必须具有相同的维数,否则应进行相应的处理。
1、序列移位
将一个离散信号序列进行移位,形成新的序列:。当时,原序列向右移位,形成的新序列称为的延时序列;当时,原序列向左移位,形成的新序列称为的超前序列。
编写Matlab程序对序列进行移位,并比较三者间的关系。
Matlab程序如下:
n1 = 10;
k1 = -6;
k2 = 4;
n = -n1:n1;
x0 = [n>=0];
x1 = [n>=k1];
x2 = [n>=k2];
subplot(3,1,1),stem(n,x0,mei'filled'); title('u(n)')
subplot(3,1,2),stem(n,x1,'filled'); title('x1(n)=u(n-6)')
subplot(3,1,3),stem(n,x2,'filled'); title('x2(n)=u(n+4)'湖北大学自考本科)
2、序列相加
当参加运算的两个序列具有相同的维数时,可直接对应相加。现考虑参加运算的两个序列的维数不同的情况。
求自我介绍演讲稿。
要求上述两个序列之和,必须对长度较短的序列补零,同时保持位置一一对应。Matlab程
序如下:
n1 = -4:6;
x1 = [n1>=-2];
n2 = -5:8;
x2 = [n2>=4];
n = min([n1,n2]):max([n1,n2]); % 为x信号建立时间序列
N = length(n); % 确定时间序列n的点数N
y1 = zeros(1,N); y2 = zeros(1,N);