《数字信号处理》——综合实验

目录

一、实验目的

二、实验原理

三、实验仪器

 四、实验内容(实验任务)

 五、实验记录(仿真程序)

 六、实验结果及分析

1、任务一实验结果及分析: 

 2、任务二实验结果及分析:

3、任务三实验结果及分析:

 七、实验体会


一、实验目的

1、离散系统的模型时域表示的 MATLAB 实现函数有 filter 函数和 impz 函数两种,本实验通过以上函数实现离散系统的时域模型级系统的相应。

2、通过实验的方法实现系统的稳定性分析。

二、实验原理

        1.filter 函数:利用递归滤波器或非递归滤波器对数据滤波,将一个离散系统可以看成一个滤波器,系统的输出就是输入经过滤波器的结果。

⚫ y=filter(b,a,x);

        说明: y 表示由向量 b 和 a 组成的系统对输入信号 x 进行滤波,系统的输出为 y。

        2.impz 函数:直接给出系统的单位冲激响应。

⚫ impz ( b, a );

        例:当系统的输入输出差分方程为:

 

        并且系统的输入为 64 点单位冲激序列的时候,分别用 filter 和 impz 函数得到系统单位冲激响应曲线,并对其进行比较。 

⚫ 参考程序 

clear all;
pulse=[1,zeros(1,63)];
b=[0.7 0.3];
a=[1,-0.8,-0.5];
h1=filter(b,a,pulse);
h2=impz(b,a,64);
subplot(2,1,1),stem(h1),title('filter function');
subplot(2,1,2),stem(h2),title('impz function');

        3.用实验的方法检查系统是否稳定。其方法是:在输入端加入单位阶跃序列,观察输出波形,如果稳定在一个常数值(包含 0),系统稳定,否则系统不稳定。

三、实验仪器

1、MATLAB软件;

2、filter 函数;

3、impz 函数;

4、zeros函数;

5、ones函数;

 四、实验内容(实验任务)

1、任务一:

⚫ 当系统的输入输出差分方程为:

        并且系统的输入为 N 点单位冲激序列的时候,分别用 filter 和 impz 函数得到系统单位冲激响应曲线,并对其进行比较。(N 值自定)

2、任务二:

⚫ 任意选定实验一设定的一个基本离散信号作为输入信号(除单位冲激序列以外的离散信号),选取适当函数,获取系统的输出相应曲线,系统模型为:

 

3、任务三:

⚫ 给定一谐振器的差分方程为

 

令:b0=1/100.49,谐振器的谐振频率为 0.4rad。

① 用实验的方法检查系统是否稳定。其方法:再输入端加入单位阶跃序列,观察输出波形,如果稳定在一个常数值(包含0),系统稳定,否则系统不稳定。

② 给定输入信号为

求出系统的输出相应,并画出波形。

 五、实验记录(仿真程序)

1、任务一仿真程序: 

clear all;
pulse=[1,zeros(1,63)];%n的值为64
b=[0.3,0.7,0.7];%x的输入系数b
a=[0.9,-1,-0.8];%y的输入系数a
h1=filter(b,a,pulse);%利用filter函数来产生系统单位冲激响应曲线
h2=impz(b,a,64);%利用impz函数来产生系统单位冲激响应曲线
subplot(2,1,1),stem(h1),title('filter function');
subplot(2,1,2),stem(h2),title('impz function');

 2、任务二仿真程序:

% 定义系统模型参数
A = [1, -0.9, -0.3];
B = [0.6, 0.2];
% 定义输入信号(单位阶跃序列)
n = 0:70; % 时间点从0到70
x = zeros(size(n));
x(n >= 0) = 1; % 单位阶跃序列
y = filter(B,A,x);
% 绘制输入信号和输出响应曲线
subplot(2,1,1);
stem(n, x, 'r', 'filled'); % 输入信号为红色
xlabel('时间(n)');
ylabel('输入信号 x(n)');
title('输入信号:单位阶跃序列');
subplot(2,1,2);
stem(n, y, 'b', 'filled'); % 输出信号为蓝色
xlabel('时间(n)');
ylabel('输出信号 y(n)');
title('系统输出响应');
% 显示图形
grid on;

 3、任务三仿真程序:

%产生信号un
un=ones(1, 256);    
n=0:255; 
%产生正弦信号
xsin=sin(0.014*n)+sin(0.4*n);  
A=[1, -1.8237, 0.9801]; 
B=[1/100.49, 0,-1/100.4];   
%系统差分方程系数向量B和A
y31n=filter(B, A, un);      
 %谐振器对un的响应y31n
y32n=filter(B, A, xsin);  
%谐振器对正弦信号的响应y32n
figure(3)
%调用函数stem绘图
subplot(2, 1, 1); y='y31(n)'; stem(y31n,'.')
title('(h) 谐振器对u(n)的响应y31(n)')
%调用函数stem绘图
subplot(2, 1, 2); y='y32(n)'; stem(y32n,'.'); 
title('(i) 谐振器对正弦信号的响应y32(n)')

 六、实验结果及分析

1、任务一实验结果及分析: 

《数字信号处理》——综合实验_第1张图片

图一  filter函数得到的系统单位冲激响应曲线 

 

《数字信号处理》——综合实验_第2张图片

图二  impz函数得到的系统单位冲激响应曲线 

(1)Filter函数求解原理分析:

        对于使用filter来得到系统单位冲激响应,我们应该先知道filter函数的求解原理:利用递归滤波器或非递归滤波器对数据滤波,将一个离散系统可以看成一个滤波器,系统的输出就是输入经过滤波器的结果。

        在本题中,解释为:我们将长度为N=64的单位冲激序列作为输入信号输入一个差分方程为:

 

的离散系统中,对其进行求解对应的单位冲激响应。此时我们将这个离散系统等效为一个滤波器,所以长度为N=64的单位冲激序列经过这个等效的滤波器之后,得到的滤波结果就是此离散系统的输出。我们就利用filter函数将求解离散系统对于长度为N=64的单位冲激序列的单位冲激响应变成了求解对于长度为N=64的单位冲激序列经过滤波器的滤波结果。

(2)impz函数求解原理分析:

        对于使用impz来得到系统单位冲激响应,我们应该先知道impz函数的求解原理:

       直接给出(求出)系统的单位冲激响应。

        在本题中,解释为:我们将长度为N=64的单位冲激序列作为输入信号输入一个差分方程为:

 

的离散系统中,对其进行求解对应的单位冲激响应。此时我们只需要借助impz函数工具就可以直接一步到位的轻松快捷的求出长度为N=64的单位冲激序列的单位冲激响应。

(3)实验结果分析:

        由图一和图二所得曲线图像结果进行比较可得到:

        由filter函数间接求解得到的系统单位冲激响应曲线与由impz函数直接求解得到的系统单位冲激响应曲线图像吻合且图像曲线长度均为设置的64。这表明了一下两点结论:

        ——用filter函数间接求解离散系统对于长度为N=64的单位冲激序列的单位冲激响应与用impz函数直接求解离散系统对于长度为N=64的单位冲激序列的单位冲激响应结果一致。

        ——从小范围来说,对输入离散系统的冲激序列进行求解冲激响应的时候可以除了可以用impz函数直接进行求解之外,还可以用更方便于理解与更形象的求解方法:filter函数来进行转化为滤波器思想来求解;从大范围来说,对输入离散系统的序列信号进行求解对应响应的时候,这时候可以用更方便于理解与更形象的求解方法:filter函数来进行转化为滤波器思想来求解。

 2、任务二实验结果及分析:

《数字信号处理》——综合实验_第3张图片

 图三  选取的单位阶跃信号作为输入信号

《数字信号处理》——综合实验_第4张图片

图四  基于单位阶跃信号的系统输出响应曲线 

 

(1)本任务求解原理:

        利用的是filter函数的求解原理,如任务一中对filter函数求解的分析与总结一样!对本任务中的离散系统输入单位阶跃序列,求系统的输出响应曲线。依据任务一对于filter函数的分析:此处我们就利用filter函数将求解离散系统对于单位阶跃序列的输出响应曲线变成了求解对于单位阶跃序列经过滤波器的滤波曲线。这时候就更方便于理解与更形象的去求解了!

(2)实验结果分析:

        图三所示是选取的实验一基本信号中的单位阶跃序列来作为输入信号的曲线图像,有70个序列点。

        图四展示当选取的输入信号为单位阶跃序列的时候,系统输出响应曲线的示意图。可以看出此时系统输出响应在n为0到40之间,基本上没有多大的变化,响应序列值基本上为0;但在n为40到70之间的时候,响应序列取值逐渐开始增大,取值逐渐不为0,而且似乎呈现指数式增加。同时依据系统稳定性判断的方法,可以得到,本离散系统是一个不稳定系统,因为对于本任务二的离散系统输入单位阶跃序列,得到的输出响应的波形是不稳定的,处于上升增加状态,最后没有稳定在一个常数值(包括0),所以得出系统是不稳定的!

3、任务三实验结果及分析:

《数字信号处理》——综合实验_第5张图片

图五  谐振器对于单位阶跃信号的响应曲线 

《数字信号处理》——综合实验_第6张图片

图六  谐振器对于正弦信号的响应曲线 

(1)任务三求解原理:

        还是利用的filter函数的求解原理,如任务一中对filter函数求解的分析与总结一样!对本任务中的离散系统分别输入单位阶跃序列与正弦信号,求系统的输出响应曲线。依据任务一对于filter函数的分析:此处我们就利用filter函数分别求解离散系统对于单位阶跃序列与正弦信号的输出响应曲线变成了求解对于单位阶跃序列和正弦信号经过滤波器的滤波曲线。这时候就更方便于理解与更形象的去求解了!

(2)实验结果分析:

        ——对第一小问的分析:对于本任务三的离散系统的稳定性判断:从图五所示结果谐振器对于单位阶跃信号的响应曲线可以看出,我们在输入端加入单位阶跃序列,谐振器的响应输出曲线波形起初来回振荡,最后振荡幅度越来越小,稳定于一个常数0;由稳定的检验方法得到,因为本谐振器输出波形稳定在一个常数值0,所以本系统稳定。

        同时还可以分析出来,本系统是一个谐振器系统也是一个离散系统。因为我在任务二中输入的信号也是单位阶跃序列   ,所以将本小问的图五与任务二的图四进行对比可以得出:通过控制差分方程的系数,可以改变离散系统对不同输入信号的响应特性。离散系统在一定条件下是稳定的,具体条件与系统的参数有关。

        ——对第二小问的分析:由图六可以看出,当输入信号是指定的正弦信号时,系统的输出波形是不稳定的,从最初的一个点:原点(或者最初的一个值:0)开始,波形与幅值来回振荡,而且振荡幅度越来越大。谐振器具有对某个频率进行谐振的性质,本实验中的谐振器的谐振频率是0.4 rad,因此稳定波形为sin(0.4n)。但是给定的正弦信号中谐振频率不只有0.4还有0.014,这就导致了输入这个指定的正弦信号进入谐振器,输出的波形不稳定以及振荡。

 七、实验体会

本人通过这次综合实验的学习,有如下收获:

        1、通过任务一:本人学会了两种方法对输入离散系统的单位冲激序列的冲激响应的求解:filter函数与impz函数。尤其特别清楚的了解到了filter函数的用法精髓:对输入离散系统的序列信号进行求解对应响应的时候,这时候可以用更方便于理解与更形象的求解方法:filter函数来进行转化为滤波器思想来求解。这就体现在为后面任务二与任务三使用filter函数来完成实验做了铺垫!

        2、通过任务二:本人进一步强化了对于filter函数的理解与使用,实现利用filter自己仿真求出对输入离散系统的输入信号的对应响应的求解。以及初步开始实践判断系统稳定性的方法!

        3、通过任务三:本人学会了如何进行对一个离散系统的稳定性判断与实践;也认知和学习到一个谐振器具有对某个频率进行谐振的性质。又再一次强化了我对于filter函数的理解与运用!

        总的来说,本次综合实验收获非常不错!在摸索中理解,并且还学会了熟练使用filter函数去求解响应,学会了实验任务中布置的方法!

 

你可能感兴趣的:(信号处理,matlab,信息与通信)