数字信号处理实验报告3

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验3 离散时间系统的特性离散时间系统的输出

一实验内容

给定离散时间系统

y(n)=x(n)+x(n-1)+0.9y(n-1)-0.81y(n-2)

1)求系统函数,调用zplane,画出系统的零极图;

2)调用freqz,画出系统的幅度响应和相位响应。

3)系统输入信号为

x(n)=sin(n*pi/3)+5cos(n*pi) (0≤n ≤ 49),

用四种方法计算系统的输出y(n)

a. 用差分方程递推

b. 调用conv函数

c. 调用filter函数

d. 利用DFT计算

观察结果,判断四种方法得到的结果是否一致?如果使得上述方法结果一致,编程时有关参数应该怎样选取?

二编程原理、思路和公式

1.对离散时间系统y(n)=x(n)+x(n-1)+0.9y(n-1)-0.81y(n-2),用B表示x(n),即系统函数的分母部分,用A表示y(n),即系统函数的分子部分。调用zplane(B,A

函数,即可绘制由行向量B和A构成的系统函数的零极点分布图。

H时,调用[h, w] = freqz(b, a, n)可2.在求解离散时间系统的频率响应函数)

( j e

得到数字滤波器的n点幅频响应值,这n个点均匀地分布在[0, p]上,并将这n个

频点的频率记录在w中,相应的频响值记录在h中。即可得到系统函数的幅度响应和相位响应。

3. 差分方程递推法:首先定义数组x和y x=zeros(1,50);y=zeros(1,50);

然后用for循环定义输入信号x(n)=sin(n*pi/3)+5cos(n*pi) (0≤n ≤49),即i=0:49 x(i+1)=sin(i*pi/3)+5*cos(i*pi);由递推法写出不能循环的前三项。再应用for循环求y i=4:49;y(i)=x(i)+x(i-1)+0.9*y(i-1)-0.81*y(i-2);

4. 调用filter函数:先分别写出x y的定义x=sin(n*pi/3)+5*cos(n*pi);

B=[1,1];A=[1,-0.9,0.81];调用filter函数实现对信号的滤波处理

y = filter(B, A x); %对于由矢量B A定义的数字系统,当输入信号为x时,对x中的数据进行滤波,结果放于y中。

5. 调用conv函数:先分别写出x y的定义x=sin(n*pi/3)+5*cos(n*pi);

B=[1,1];A=[1,-0.9,0.81] 然后求解系统的冲击响应hn [hn,n]=impz(B,A,14); 再调用conv函数用线性卷积求系统响应y=conv(hn,x)

6.利用DFT计算:先编写两个子函数DFT 和IDFT 然后定义函数x和y,求系统的冲击响应hn [hn,n]=impz(B,A,14);然后直接调用两个子函数求输出y

三、程序脚本,并注释

1 B=[1,1];A=[1,-0.9,0.81];%给定义函数

subplot(1,3,1);

zplane(B,A); %绘制由行向量AB构成的系统函数确定的零极点分布图xlabel('实部Re');ylabel(‘虚部Im');title('系统函数零极点分布');grid;

[H,w]=freqz(B,A,'whole'); %求解离散事件系统的频率响应

subplot(1,3,2);plot(w/pi,abs(H),'linewidth',2);grid;

xlabel('w/pi');ylabel('|X(e^j^w)|');title('幅频响应特性');

subplot(1,3,3);plot(w/pi,angle(H),'linewidth',2);grid;

xlabel('w/pi');ylabel('Angle[X(e^j^w)]');title('相频响应特性');

2 .N=50;n=0:N-1;x=sin(n*pi/3)+5*cos(n*pi);

B=[1,1];A=[1,-0.9,0.81];

y=filter(B,A,x); %对于由AB组成的数字系统,当输入信号为x时,对x中的数据进行滤波,结果放在y中

stem(n,y);

3 . N=50;n=0:N-1;x=sin(n*pi/3)+5*cos(n*pi);

B=[1,1];A=[1,-0.9,0.81];

[hn,n]=impz(B,A,14); %求解数字响应的冲击h,取样点数由n确定

y=conv(hn,x); %用线性卷积求系统响应

stem(y);

4.dft子函数

function Xk=DFT(xn,N)

n=[0:1:N-1];

k=[0:1:N-1];

WN=exp(-j*2*pi/N);

nk=n'*k;

WNnk=WN.^nk;

Xk=xn*WNnk;

5.idft子函数

function xn=IDFT(Xk,N)

n=[0:1:N-1];

k=[0:1:N-1];

WN=exp(-j*2*pi/N);

nk=-n'*k;

WNnk=WN.^nk;

xn=Xk*WNnk/N;

6. A=[1,-0.9,0.81];

B=[1,1];

N=100;

n=0:N-1;

xn1=sin(n*pi/3)+5*cos(n*pi);

hn=impz(B,A,50); %求解数字响应的冲击h,取样点数50

hn1=[hn' zeros(1,50)];

Hk=DFT(hn1,N);

Xk=DFT(xn,N);

Yk=Xk.*Hk;

y=IDFT(Yk,N);

figure;

stem(n,y);title('DFT ');

7. n=0:49;

x=zeros(1,50);

y=zeros(1,50); %定义数组x y

for i=0:49

x(i+1)=sin(i*pi/3)+5*cos(i*pi);

end

y(1)=x(1);

y(2)=x(2)+x(1)+0.9*y(1);

y(3)=x(3)+x(2)+0.9*y(2)-0.81*y(1); %先给出前三个不能循环的值for i=4:49

y(i)=x(i)+x(i-1)+0.9*y(i-1)-0.81*y(i-2); %递推法求出函数y end

n=0:49;

stem(n,y); %x y长度相同

四仿真结果、图形

相关文档
最新文档