离散时间系统的时域分析实验报告

更新时间:2023-11-27 01:46:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一 离散时间系统的时域分析

一、实验目的

1. 运用MATLAB仿真一些简单的离散时间系统,并研究它们的时域特性。

2. 运用MATLAB中的卷积运算计算系统的输出序列,加深对离散系统的差分方程、冲激响应和卷积分析方法的理解。

二、实验原理

离散时间系统其输入、输出关系可用以下差分方程描述:

当输入信号为冲激信号时,系统的输出记为系统单位冲激响应

N?dkk?0y[n?k]?M?k?0pkx[n?k]?[n]?h[n],则系统响应为如下的卷积计算式:

y[n]?x[n]?h[n]?m????x[m]h[n?m]

? 当h[n]是有限长度的(n:[0,M])时,称系统为FIR系统;反之,称系统为IIR系统。在MATLAB中,可以用函数y=Filter(p,d,x) 求解差分方程,也可以用函数 y=Conv(x,h)计算卷积。 例1

clf; n=0:40; a=1;b=2; x1= 0.1*n;

x2=sin(2*pi*n); x=a*x1+b*x2; num=[1, 0.5,3]; den=[2 -3 0.1];

ic=[0 0]; %设置零初始条件

y1=filter(num,den,x1,ic); %计算输入为x1(n)时的输出y1(n) y2=filter(num,den,x2,ic); %计算输入为x2(n)时的输出y2(n) y=filter(num,den,x,ic); %计算输入为x (n)时的输出y(n) yt= a*y1+b*y2; %画出输出信号 subplot(2,1,1) stem(n,y);

ylabel(‘振幅’);

title(‘加权输入a*x1+b*x2的输出’);

subplot(2,1,2) stem(n,yt);

ylabel(‘振幅’);

title(‘加权输出a*y1+b*y2’);

(一)、线性和非线性系统

对线性离散时间系统,若y1(n)和y2(n)分别是输入序列x1(n)和x2(n)的响应,则输入

x(n)?ax1(n)?bx2(n)的输出响应为y(n)?ay1(n)?by2(n),即符合叠加性,其中对任意

常量a和b以及任意输入x1(n)和x2(n)都成立,否则为非线性系统。 (二)、时不变系统和时变系统

对离散时不变系统,若y1(n)是x1(n)的响应,则输入x(n)=x1(n-n0)的输出响应为y(n)=y1(n-n0),式中n0是任意整数。该输入输出关系,对任意输入序列及其相应的输出成立,若对至少一个输入序列及其相应的输出序列不成立,则系统称之为时变的。 (三)、线性卷积

假设待卷积的两个序列为有限长序列,卷积运算符在MATLAB中可 命令conv实现。例如,可以把系统的冲激响应与给定的有限长输入序列进行卷积,得到有限长冲激响应系统的输出序列。下面的MATLAB程序实现了该方法。 例2

clf;

h=[3 2 1 -2 1 0 -4 0 3];%冲激 x=[1 -2 3 -4 3 2 1 ]; %输入序列 y=conv(h,x); n=0:14; stem(n,y);

xlabel(‘时间序号n’);ylabel(‘振幅’); title(‘用卷积得到的输出’);grid;

三、实验内容与步骤

1. 假定一因果系统为

y(n)-0.4y(n-1)+0.75y(n-2)=2.2403x(n)+2.4908x(n-1)+2.2403x(n-2) 用MATLAB程序仿真该系统,输入三个不同的输入序列:

??0.1n),x2(n)?cos(2??0.4n),x?2x1(n)?3x2(n) x1(n)?cos2(计算并并显示相应的输出y1(n), y2(n)和y(n)。

2. 用MATLAB程序仿真步骤1给出的系统,对两个不同的输入序列x(n)和x(n-10),计算

并显示相应的输出序列y3(n)和y4(n)。

3.用MATLAB程序仿真计算下列两个有限长序列的卷积和并显示图形。

x1(n)??(n)?3?(n?1)?2?(n?2)

x2(n)?u(n)?u(n?3)

四、实验仪器设备

计算机,MATLAB软件

五、实验要求

给出理论计算结果和程序计算结果并讨论。

六、实验结果

实验1:

clf; n=0:40; a=2;b=-3;

x1= cos(2*pi*0.1*n); x2=cos(2*pi*0.4*n); x=a*x1+b*x2; den=[1, -0.4,0.75];

num =[2.2403 2.4908 2.2403];%分子系数 ic=[0 0]; %设置零初始条件

y1=filter(num,den,x1,ic); %计算输入为x1(n)时的输出y1(n) y2=filter(num,den,x2,ic); %计算输入为x2(n)时的输出y2(n)

yn=filter(num,den,x,ic); %计算输入为x (n)时的输出y(n)%画出输出信号 subplot(2,2,1) stem(n,y1); ylabel('振幅'); title('y1输出'); subplot(2,2,2) stem(n,y2); ylabel('振幅'); title('y2输出'); subplot(2,2,3) stem(n,yn); ylabel('振幅'); title('yn输出');

实验2: clf;

n=0:40;n1=0:50;

a=2;b=-3;

x1= cos(2*pi*0.1*n); x2=cos(2*pi*0.4*n); x3=a*x1+b*x2;

x4=[zeros(1,10), x3]; den=[1, -0.4,0.75];

num=[2.2403 2.4908 2.2403]; ic=[0 0]; %设置零初始条件 y3=filter(num,den,x3,ic);

y4=filter(num,den,x4,ic);%计算输入为x (n)时的输出y(n) %画出输出信号 subplot(2,1,1) stem(n,y3); ylabel('振幅'); title('yn输出'); subplot(2,1,2) stem(n1,y4); ylabel('振幅'); title('y1输出');

实验3: clf;

x=[1 3 2];%冲激

u=[1 1 1]; %输入序列 y=conv(u,x); n=0:4; stem(n,y);

xlabel('时间序号n');ylabel('振幅'); title('用卷积得到的输出');grid;

实验二(1) 离散时间信号的DTFT

一、实验目的

1. 运用MATLAB理解Z变换及其绘制H(z)的零极点图。 2. 运用MATLAB计算逆Z变换。

二、实验原理

(一)、MATLAB在ZT中的应用。

线性时不变离散时间系统的冲激响应h(n)的z变换是其系统函数H(z), 在MATLAB中可以利用性质求解Z变换,例如可以利用线性卷积求的Z变换。若H(z)的收敛域包含单位圆,即系统为稳定系统,即系统在单位圆上z?ej?处计算的是系统的频率响应。

(二)、逆Z变换

Z变换对于分析和表示离散线性时不变系统具有重要作用。但是在MATLAB中不能直接计算Z变换,但是对于一些序列可以进行逆Z变换。

已知序列的Z变换及其收敛域, 求序列称为逆Z变换。 序列的Z变换及共逆Z变换表示如下:

X(z)??x(n)z?n,Rx??z?Rx?n???

1n?1x (ndzR x? ) ? ? c X ( z ) z , c ? ( , R x ? )

2?j?通常,直接计算逆Z变换的方法有三种:围线积分法、长除法和部分分式展开法。在实际中,直接计算围线积分比较困难,往往不直接计算围线积分。由于序列的Z变换常为有理函数,因此采用部分分式展开法比较切合实际,它是将留数定律和常用序列的Z变换相结合的一种方法。

设x(n)的Z变换X(z)是有理函数,分母多项式是N阶,分子多项式是M阶,将X(z)展成一些简单的常用的部分分式之和,通过常用序列的Z变换求得各部分的逆变换,再相加即得到原序列x(n)。在MATLAB中提供了函数residuez来实现上述过程,调用格式如下:

[R,P,K]= residuez(B,A)

其中B、A分别是有理函数分子多项式的系数和分母多项式的系数,输出R是留数列向量,P是极点列向量。如果分子多项式的阶数大于分母多项式的阶数,则K返回为常数项的系数。

三、实验内容与步骤

选做一个实验:

1、.运行下面程序并显示它,验证离散时间傅立叶变换DTFT的时移性。

已知两个线性时不变的因果系统,系统函数分别为 H1(z)?1?z?N1?z?N,H2(z)? N?N1?az分别令N=8,a=0.8,计算并图示这两个系统的零、极点图及幅频特性。 程序:

2、运行下面程序并显示它,验证离散时间傅立叶变换DTFT的频移性。

四、实验仪器设备

计算机,MATLAB软件

五、实验注意事项

课前预先阅读并理解实验程序;

六、实验结果

clear

num1=[1 0 0 0 0 0 0 0 -1];%分子系数高阶到低阶 den1=[1 0 0 0 0 0 0 0 0]; subplot(2,2,1) zplane(num1, den1) grid;

title('H1零极点分布图') ;

[H,w]=freqz(num1,den1,200,'whole'); %中B和A分别为离散系统的系统函数分子、分母多项式的系数向量,

HF=abs(H); %返回量H则包含了离散系统频响在 0~pi范围内N个频率等分点的值(其中N为正整数)

subplot(2,2,2); %w则包含了范围内N个频率等分点。 plot(w,HF)

title('H1幅频响应特性曲线'); a=0.8; A=a^8;

num2=[1 0 0 0 0 0 0 0 -1];%分子系数高阶到低阶 den2=[1 0 0 0 0 0 0 0 A]; subplot(2,2,3) zplane(num2, den2); grid;

title('H2零极点分布图') ;

[H,w]=freqz(num2,den2,200,'whole'); %中B和A分别为离散系统的系统函数分子、分母多项式的系数向量,

HF=abs(H); %返回量H则包含了离散系统频响在 0~pi范围内N个频率等分点的值(其中N为正整数)

subplot(2,2,4); %w则包含了范围内N个频率等分点。 plot(w,HF)

title('H2幅频响应特性曲线');

实验二(2) 离散傅立叶变换DFT

一、实验目的

1. 运用MATLAB计算有限长序列的DFT和IDFT。 2. 运用MATLAB验证离散傅立叶变换的性质。 3 .运用MATLAB计算有限长序列的圆周卷积。

二、实验原理

(一)、离散傅立叶变换DFT的定义

一个有限长度的序列x(n)(0≤n

j???2?k/Nn????x(n)e??j2?kn/N 0?k?N?1

可以看到X(k)也是频域上的有限长序列,长度为N。序列X(k)称为序列x(n)的N点DFT。N称为DFT变换区间长度。 通常表示

WN?e?j2?/N

可将定义式表示为

X(k)?

n????x(n)W?kn 0?k?N?1

X(k)的离散傅里叶逆变换(IDFT)为

1x(n)?N

(二)、DFT的性质

1.圆周移位

n????X(k)W??kn 0?n?N?1

定义序列x(n)的m单位的圆周移位y(n)为:

y(n)?~x(n?m)RN(n)?x((n?m))NRN(n)

(x((n?m))N即对x(n)以N为周期进行周期延拓的序列~x(n)的m点移位,RN(n)表示对此延拓移位后再取主值序列)

1. 圆周卷积

??X1(k) 0?k?N?1 设 x1(n)??NDFT??X2(k) 0?k?N?1 x2(n)??NDFT??X1(k)X2(k) 0?k?N?1 则 x1(n) x2(n)??NDFT这里 x1(n) x2(n) 表示x1(n)与 x2(n)的N点循环卷积。

x1(n) x2(n)??x2(m)[x1((n?m))NRN(n)],n?0,1,?,N?1

m?0N?1

2. 共轭对称性

x(n)?xep(n)?xop(n),0?n?N?1

1?*x(n)?[x(n)?x(N?n)]ep?2??,0?n?N?1

1*?xop(n)?[x(n)?x(N?n)]2?DFT??X(k) x(n)??N1DFTxep(n)????[X(k)?X*(k)]?Re[X(k)]?Xr(k)

N2实际应用中,利用上述对称性质可以减少DFT的运算量,提高运算效率。

三、实验内容与步骤:(2,3选做一个)

1. 构造离散傅立叶正、反变换函数的MATLAB程序,其中dft(xn,N)为离散傅立叶正变换,

idft(xn,N)为离散傅立叶反变换。

2、如果x(n)?sin(n?/8)?sin(n?/4)是一个N=16的有限长序列,利用离散傅立叶变换函数求其16点DFT。

3、如果x(n)?cos(0.82?n)?2sin(0.43?n)是一个0?n?100的有限长序列,绘制x(n)及其离散傅立叶变换X(K)的幅度、相位图。

四、实验仪器设备

计算机,MATLAB软件

五、实验注意事项

课前预先阅读并理解实验程序;

六、实验结果

Dft:程序

function xk=dft(xn,N) ?t n=[0:1:N-1]; k=n;

WN=exp(-i*2*pi/N); %旋转因子 nk=n'*k; WNnk=WN.^nk; xk=xn*WNnk; end

idft:程序

function xn=idft(xk,N) %idft n=[0:1:N-1]; k=n;

WN=exp(-j*2*pi/N); nk=n'*k; %矩阵的转制*K WNnk=WN.^(-nk); xn=xk*WNnk/N; end

实验程序: 选做2

k=16; %序列长 N=16;?t点数 n1=[0:1:15];

xn1=sin(pi/8*n1/k)+sin(pi/4*n1/k); %抽样信号 xk1=dft(xn1,N); subplot(1,2,1); stem(n1,xn1); xlabel('t/T'); ylabel('x(n)'); subplot(1,2,2); stem(n1,xk1); grid;

xlabel('k'); ylabel('x(k)');

选做1:

fp=400; %通带上限临界频率 fs=600; %阻带临界频率

Rp=0.3; %通带允许的最大衰减 Rs=60; %阻带允许的最小衰减 Fs=1000; %采样频率

Wp=2*pi*fp; %通带截止平率 Ws=2*pi*fs; %阻带截止平率 %Nn=256;

n=(0:100-1);%采样点数

[N,Wn]=buttord(Wp,Ws,Rp,Rs,'s'); %用于计算阶数和截止平率 [b,a]=butter(N,Wn,'s'); %计算分子向量b,分母向量a

w=linspace(1,400,100)*2*pi; %起始值,终止值,元素个数

H=freqs(b,a,w); % 在[0,2π]上进行采样,采样频率点由矢量w指定 figure(1);

plot(w/(2*pi),20*log10(abs(H))); title('巴特沃斯模拟滤波器幅频特性'); xlabel('频率/Hz'); ylabel('幅度/db');

%[bz,az]=impinvar(b,a,Fs); êiyong冲击响应不变法转换为数字滤波器

实验四 基于MATLAB的FIR数字滤波器设计

一、实验目的

1. 进一步熟悉FIR数字滤波器的理论知识。

2. 熟悉与FIR数字滤波器设计有关的MATLAB函数。 3. 学会通过MATLAB,利用窗函数法设计FIR数字滤波器。

二、实验原理

设计FIR滤波器实际上是要在满足线性相位的条件下,实现幅度响应的逼近。而一个FIR滤波器若是符合线性相位,则必须满足一定的条件,即:

一个FIR滤波器若是线性相位的,则其单位冲激响应必然满足

h(n)??h(N?1?n) n=0,1,…,N-1

h(n)是关于(N-1)/2对称(奇对称或偶对称) 即,

(1) h(n)是偶对称序列

? N ? 1

??? ?2? ?h?n??h?N?1?n?,0?n?N?1(1) h(n) 是奇对称(反对称)序列

N?1?? ? ?

2? ? ?h?n???h?N?1?n??设滤波器要求的理想频率响应为Hd(ejw) , 那么FIR滤波器的设计问题在于——寻找一?系统函数H(z)??h(n)zn?0N?1?n ,使其频率响应H(e)?H(z)|z?ejw逼近Hd(ejw)。若要求

jwFIR滤波器具有线性相位特性,则h(n)必须满足上节所述的对称条件。逼近的方法有三种:

窗口设计法(时域逼近);频率采样法Frequency-sampling(频域逼近);最优化设计Optimum Equiripple(等波纹逼近)。

窗函数法又称傅立叶级数法,是设计FIR数字滤波器的最简单的方法。FIR数字滤波器的设计问题就是要使所设计的FIR数字滤波器的频率响应H(w)去逼近所要求的理想滤波器的响应Hd(w)。从单位采样响应序列来,就是使所设计滤波器的h(n)逼近理想单位采样响应序列hd(n),这可以用hd(n)和一个窗函数w(n)的乘积来得到。 (一)、设计原理。

窗函数设计FIR数字滤波器的步骤如下: (1)给定要求的频率响应函数Hd(w); (2)计算hd(n);

(3)根据过渡带宽及阻带最小衰减的要求,选定窗的性状以及窗的大小N;

(4)根据所选择的合适的窗函数w(n)来修正hd(n),得到所设计的FIR数字滤波器的单位采样响应序列h (n)= hd(n) w(n),n=0,1,…,N-1 (二)、函数的应用

MATLAB中用fir1函数来设计具有标准频率响应的FIR滤波器。其调用方式:

b=fir1(n,wn)——设计n阶低通FIR滤波器,返回的向量b为滤波器的系数(即h(n)的值),它的阶数为n+1;截止频率为wn(对π归一化后的值)。 b=fir1(n,wn,’hign’)——设计n阶高通FIR滤波器 b=fir1(n,wn,’low’)——设计n阶低通FIR滤波器

b=fir1(n,wn,’bandpass’)——设计n阶带通FIR滤波器 b=fir1(n,wn,’stop’)——设计n阶带阻FIR滤波器

b=fir1(n,wn,win)——输入参数win用来指定使用的窗函数的类型,其长度为n+1,缺省情况下,默认为汉明窗。

三、实验内容与步骤 以下选做一个

1. 用矩形窗、三角窗、汉宁窗、汉明窗分别设计低通数字滤波器。信号采样频率为

1000Hz,数字滤波器的截止频率为 100Hz,滤波器的阶数为80。

2.编写MATLAB程序,利用窗函数法设计线性相位FIR低通数字滤波器,实现对模拟信号采样后进行数字低通滤波,对模拟信号的滤波要求如下:

通带截止频率:fp=2kHz;阻带截止频率:fs=3kHz; 阻带最小衰减:αs=40dB; 采样频率:Fs=10kHz

选择合适的窗函数及其长度,求出h(n),并画出幅频特性衰减曲线。

3.编写MATLAB程序,利用窗函数法设计一线性相位FIR数字低通滤波器,通带边界频率频率0.6π,阻带边界频率0.7π0, 阻带衰减αs>50dB,通带波纹不大于1dB。

四、实验仪器设备

计算机,MATLAB软件

五、实验注意事项

根据要求独立编程设计。

六、实验结果 选做3

clear;

wp=0.6*pi;%通带边界频率频率0.6π ws=0.7*pi;%阻带边界频率0.7π0 wd=ws-wp;%主瓣宽度 N=ceil(8*pi/wd); wn=(0.6+0.7)*pi/2;

b=fir1(N,wn/pi,hanning(N+1)); freqz(b,1,512);

本文来源:https://www.bwwdw.com/article/8sqt.html

Top