数字信号处理实验(一):离散时间信号和系统的时域分析

版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Xiaomo_haa/article/details/84954389

目录

一、实验目的:

二、实验内容及要求:

1. 离散时间信号的时域分析:

2. 离散时间系统的时域分析:

三、实验结果及问题回答:

1. 离散时间信号的时域分析:

2. 离散时间系统的时域分析:


一、实验目的:

   熟悉Mat lab中产生信号和绘制信号的基本命令,掌握产生离散时间信号的基本方法;掌握离散时间系统对输入信号的简单运算处理,验证离散时间系统有关特性。

二、实验内容及要求:

1. 离散时间信号的时域分析:

  (1)修改程序P1.1,产生单位抽样序列并绘图。

  (2)修改程序P1.1,产生单位步长序列并绘图。

  (3)修改程序P1.4,产生长度为50、频率为0.08、振幅为2.5、相移为90度的一个正弦序列并绘图,该序列的周期是多少?

2. 离散时间系统的时域分析:

  (1)修改程序P2.3,其中a=4, b=-6, 并绘图,该离散时间系统是线性吗?

  (2)修改程序P2.4,其中D=15, 并绘图,该离散时间系统是时不变吗?

  (3)修改程序P2.5,产生如下因果线性时不变系统的冲激响应的前45个样本并绘图:

  (4)运行程序P2.7,对序列和求卷积生成,并用FIR滤波器对输入滤波,求得;和有差别吗?为什么要使用对补零后得到的作为输入来产生?

三、实验结果及问题回答:

1. 离散时间信号的时域分析:

  (1)实验结果:

clf;

n=-10:20;

u=[zeros(1,11)  zeros(1,10) 1 zeros(1,9)];%产生向右移动了11个单位的冲激信号

stem(n,u);

xlabel('时间序号 n');

ylabel('振幅');

title('单位样本序列')

axis([-10 20 0 1.2])

2)实验结果:

clf;

n=-10:20;

u=[zeros(1,3)  ones(1,28)];%产生向左移动了7个单位的阶跃信号

stem(n,u);

xlabel('时间序号 n');

yalbel('振幅');

title('单位样本序列')

axis([-10 20 0 1.2])

(3)实验结果:

clf;

n=0:50;

f=0.08;%定义信号的频率

phase=pi/2;%定义信号的相位

A=2.5;%定义信号的幅度

arg=2*pi*f*n-phase;

x=A*cos(arg);%生成信号

stem(n,x)

axis([0 40 -3 3])

grid on

该序列的周期是12.5;

2. 离散时间系统的时域分析:

  (1)实验结果:

clf;

n=0:40;

a=4;

b=-6;

x1=cos(2*pi*0.2*n);%生成信号x1

x2=cos(2*pi*0.8*n);%生成信号x2

x=a*x1+b*x2;%线形组合

num=[2.2403 2.4908 2.2403];%差分方程输入信号的系数

den=[1 -0.4 0.75];%差分方程输出信号的系数

ic=[0 0];

y1=filter(num,den,x1,ic);%对x1进行滤波

y2=filter(num,den,x2,ic);%对x2进行滤波

y=filter(num,den,x,ic);%对x进行滤波

yt=a*y1+b*y2;%线形组合

d=y-yt;%求出两个信号的差值

subplot(311)

stem(n,y);

ylabel('振幅');

title('加权输入:y');

subplot(312)

stem(n,yt);

ylabel('振幅');

title('加权输出:yt');

subplot(313);

stem(n,d);

xlabel('时间序号n');

ylabel('振幅');

title('差信号:d');

虽然最后得到的差值不为0,但是差值的数值都比较小,所以我么可以认为差值都是0,所以这个系统是线性系统。

(2)实验结果:

clf;

n=0:40;

D=15;

a=3.0;

b=-2;

x=a*cos(2*pi*0.2*n)+b*cos(2*pi*0.8*n);%生成原始信号x

xd=[zeros(1,D) x];

num=[2.2403 2.4908 2.2403];%定义函数的分子向量

den=[1 -0.4 0.75];%定义函数的分母向量

ic=[0 0];

y=filter(num,den,x,ic);%对x进行滤波

yd=filter(num,den,xd,ic);%对xd进行滤波

d=y-yd(1+D:41+D);%求出两个信号差值

subplot(311)

stem(n,y);

ylabel('振幅')

title('输出')

subplot(312)

stem(n,yd(1:41));

ylabel('振幅')

title('由于延时输入的输出')

grid on;

subplot(313)

stem(n,d);

xlabel('时间序号n')

yalbel('振幅')

title('差值信号')

grid on

由图可以看出,差值为0,即对原来的系统输入延时之后,输出没有发生变化,所以该系统是时不变系统。

(3)实验结果:

clf;

N=45;

num=[0.9 -0.45 0.35 0.002];%定义函数的分子向量

den=[1 0.71 -0.46 -0.62];%定义函数的分母向量

y=impz(num,den,N);%求函数的冲激响应

stem(y);

xlable('上时间序号n');

ylabel('振幅');

title('冲激响应');

grid on

(4)实验结果:

clf;

h=[3 2 1 -2  1 0 -4 0 3];%定义序列h

x=[1 -2 3 -4 3 2 1];%定义序列x

y=conv(h,x);%求序列h和x的卷积

n=0:14;

subplot(211)

stem(n,y);

xlabel('时间序号n');

ylabel('振幅');

title('用卷积得到的输出yn');

grid on

x1=[x zeros(1,8)];%生成信号x1

y1=filter(h,1,x1);%对序列x1进行滤波

subplot(212)

stem(n,y1);

xlabel('时间序号n');

ylabel('振幅');

title('由滤波生成的输出y1n');

grid on

y(n)和y1(n)没有差别。因为滤波函数生成的的信号长度和输入信号的长度一致,而卷积运算中输出信号的长度是输入信号的长度和冲激响应的信号的长度之和减去1,为了使二者一样,就要对x(n)补零之后再作为输入来产生y1(n)。

 

 

猜你喜欢

转载自blog.csdn.net/Xiaomo_haa/article/details/84954389