实验五报告.docx

上传人:b****4 文档编号:24880439 上传时间:2023-06-02 格式:DOCX 页数:16 大小:130.50KB
下载 相关 举报
实验五报告.docx_第1页
第1页 / 共16页
实验五报告.docx_第2页
第2页 / 共16页
实验五报告.docx_第3页
第3页 / 共16页
实验五报告.docx_第4页
第4页 / 共16页
实验五报告.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

实验五报告.docx

《实验五报告.docx》由会员分享,可在线阅读,更多相关《实验五报告.docx(16页珍藏版)》请在冰豆网上搜索。

实验五报告.docx

实验五报告

实验五离散时间系统的输出

有限长信号

,分别通过单位冲激响应为

的FIR系统。

1、如

,计算系统的输出信号,画出输入信号和输出信号的波形。

采用的方式如下:

(1)差分方程递推(根据FIR的差分方程表示)

(2)调用conv函数计算

(3)调用filter函数计算

(4)利用DFT计算(用DFT子函数实现IDFT运算)

(利用循环卷积计算线性卷积,则循环卷积的长度必须满足有关条件)

(1)差分方程递推(根据FIR的差分方程表示)

编程原理、思路和公式

LSI系统的差分方程为

(5.1.1)

FIR系统满足

1 

2 是非递归系统

由此可以得出

(5.1.2)

所以

(5.1.3)

所以差分方程变为

(5.1.4)

程序的编写为两层for循环求和,内层对m循环,外层对n循环。

两层循环实现的是卷积的过程。

编写过程中应注意到卷积后得到的序列y的长度为N1+N2-1。

程序脚本,并注释

clc;

clear

N1=128;%x(n)的长度

nx1=0;nx2=N1-1;nx=nx1:

nx2;%nx的取值

N2=16;%h(n)的长度

nh1=0;nh2=N2-1;nh=nh1:

nh2;%nh的取值

x1=cos(nx*pi/16);%定义函数x1

x2=cos(nx*pi/16)+cos(nx*pi/2);%定义函数x2

h=0.5*(1-cos(2*pi*nh/(N2-1)));%定义函数h

ny1=nx1+nh1;ny2=nx2+nh2;

ny=ny1:

ny2;%卷积得到的函数y的长度

for(n=1:

length(ny))%外层循环对n循环,将ny与y一一对应

y1(n)=0;%y1赋初值

y2(n)=0;%y2赋初值

for(m=1:

N2)%内层循环对m循环,即对任一n卷积的过程

k=n-m+1;%中间变量k为x翻转移位后的横轴

ifk>0&k<=N1%x翻转移位后与h能对应相乘的部分

y1(n)=y1(n)+h(m)*x1(k);%卷积求和

y2(n)=y2(n)+h(m)*x2(k);%卷积求和

end

end

end

%%画图

subplot(2,1,1);

stem(ny,y1,'.'),gridon;

xlabel('n');ylabel('y1');

title('y1=cos(n\pi/16)R_1_2_8(n)*0.5(1-cos(2n\pi/(N2-1))R_1_6(n)');

subplot(2,1,2);

stem(ny,y2,'.'),gridon;

xlabel('n');ylabel('y2');

title('y2=[cos(n\pi/16)+cos(n\pi/2)]R_1_2_8(n)*0.5(1-cos(2n\pi/(N2-1))R_1_6(n)');

仿真结果、图形

图5.1.1由差分方程递推得到的实验图

(2)调用conv函数计算

编程原理、思路和公式

直接调用conv函数,注意新的函数的长度

程序脚本,并注释

clc;

clear

N1=128;%x(n)的长度

nx1=0;nx2=N1-1;nx=nx1:

nx2;%nx的取值

N2=16;%h(n)的长度

nh1=0;nh2=N2-1;nh=nh1:

nh2;%nh的取值

x1=cos(nx*pi/16);%定义函数x1

x2=cos(nx*pi/16)+cos(nx*pi/2);%定义函数x2

h=0.5*(1-cos(2*pi*nh/(N2-1)));%定义函数h

ny1=nx1+nh1;ny2=nx2+nh2;

ny=ny1:

ny2;%卷积得到的函数y的长度

y1=conv(x1,h);%调用conv函数求y1

y2=conv(x2,h);%调用conv函数求y2

%%画图

subplot(2,1,1);

stem(ny,y1,'.'),gridon;

xlabel('n');ylabel('y1');

title('y1=cos(n\pi/16)R_1_2_8(n)*0.5(1-cos(2n\pi/(N2-1))R_1_6(n)');

subplot(2,1,2);

stem(ny,y2,'.'),gridon;

xlabel('n');ylabel('y2');

title('y2=[cos(n\pi/16)+cos(n\pi/2)]R_1_2_8(n)*0.5(1-cos(2n\pi/(N2-1))R_1_6(n)');

仿真结果、图形

图5.1.2由conv函数得到的实验图形

(3)调用filter函数计算

编程原理、思路和公式

现将序列进行补零运算,使得新的序列满足长度,然后直接调用filter函数进行运算

(5.1.5)

在本次实验中

(5.1.6)

所以,b=h(n),a=1.

程序脚本,并注释

clc;

clear

N1=128;%x(n)的长度

nx1=0;nx2=N1-1;nx=nx1:

nx2;%nx的取值

N2=16;%h(n)的长度

nh1=0;nh2=N2-1;nh=nh1:

nh2;%nh的取值

x1=cos(nx*pi/16);%定义函数x1

x2=cos(nx*pi/16)+cos(nx*pi/2);%定义函数x2

h=0.5*(1-cos(2*pi*nh/(N2-1)));%定义函数h

ny1=nx1+nh1;ny2=nx2+nh2;

ny=ny1:

ny2;%卷积得到的函数y的长度

x11=[zeros(1,abs(ny1-nx1))x1zeros(1,abs(ny2-nx2))];%补零

x22=[zeros(1,abs(ny1-nx1))x2zeros(1,abs(ny2-nx2))];%补零

a=[1];%y的系数

b=[h];%x的系数

y1=filter(b,a,x11);%调用filter函数求y1

y2=filter(b,a,x22);%调用filter函数求y2

%%画图

subplot(2,1,1);

stem(ny,y1,'.'),gridon;

xlabel('n');ylabel('y1');

title('y1=cos(n\pi/16)R_1_2_8(n)*0.5(1-cos(2n\pi/(N2-1))R_1_6(n)');

subplot(2,1,2);

stem(ny,y2,'.'),gridon;

xlabel('n');ylabel('y2');

title('y2=[cos(n\pi/16)+cos(n\pi/2)]R_1_2_8(n)*0.5(1-cos(2n\pi/(N2-1))R_1_6(n)');

仿真结果、图形

图5.1.3由filter函数求得的实验图形

(4)利用DFT计算(用DFT子函数实现IDFT运算)

编程原理、思路和公式

由DFT计算线性卷积的流程图为

X(k)

x(n)

H(k))))

Y(k)

y(n))

h(n)

其中N为线性卷积的长度,在此实验中为N1+N2-1。

图5.1.4由DFT计算线性卷积框图

所以编写子程序计算N(N=N1+N2-1)点DFT,IDFT,然后按框图进行编程即可。

程序脚本,并注释

计算DFT

function[X,k]=dft1(x,N)%定义函数

for(q=1:

N)%外层循环,对k的循环,循环N次

k(q)=q-1;%循环计算不同的k值

sum=0;%求和定初值

for(m=1:

N)%内层循环对n的求和过程,循环的次数为n的长度

sum=sum+x(m)*exp(-i*2*pi*k(q)*(m-1)/N);%求和

X(q)=sum;%把得到的和的值赋给,进行对下一个k的求和过程

end%内循环结束

end%外循环结束

计算IDFT

function[y,n]=idft1(Y,N)%定义函数

for(p=1:

N)%外层循环,对k的循环,循环N次

n(p)=p-1;%循环计算不同的n值

sum=0;%求和定初值

for(l=1:

N)%内层循环对k的求和过程,循环的次数为k的长度

sum=sum+Y(l)*exp(j*2*pi*n(p)*(l-1)/N);%求和

y(p)=sum/N;%把得到的和的值赋给y,进行对下一个k的求和过程

end%内循环结束

end%外循环结束

主程序

clc;

clear

N1=128;%x(n)的长度

nx1=0;nx2=N1-1;nx=nx1:

nx2;%nx的取值

N2=16;%h(n)的长度

nh1=0;nh2=N2-1;nh=nh1:

nh2;%nh的取值

N=N1+N2-1;

x1=cos(nx*pi/16);%定义函数x1

x2=cos(nx*pi/16)+cos(nx*pi/2);%定义函数x2

h=0.5*(1-cos(2*pi*nh/(N2-1)));%定义函数h

ny1=nx1+nh1;ny2=nx2+nh2;

ny=ny1:

ny2;%卷积得到的函数y的长度

x11=[zeros(1,abs(ny1-nx1))x1zeros(1,abs(ny2-nx2))];%补零

x22=[zeros(1,abs(ny1-nx1))x2zeros(1,abs(ny2-nx2))];%补零

hh=[zeros(1,abs(ny1-nh1))hzeros(1,abs(ny2-nh2))];;%补零

[X1,k]=dft1(x11,N);%调用dft1计算X1(k)

[X2,k]=dft1(x22,N);%调用dft1计算X2(k)

[H,k]=dft1(hh,N);%调用dft1计算H(k)

fork=1:

N%求解Y(k)=X(k)H(K),将k与Y一一对应

Y1(k)=X1(k)*H(k);

Y2(k)=X2(k)*H(k);

end

[y1,n]=idft1(Y1,N);%调用idft1计算y1(n)

[y2,n]=idft1(Y2,N);%调用idft1计算y2(n)

%%画图

subplot(2,1,1);

stem(ny,y1,'.'),gridon;

xlabel('n');ylabel('y1');

title('y1=cos(n\pi/16)R_1_2_8(n)*0.5(1-cos(2n\pi/(N2-1))R_1_6(n)');

subplot(2,1,2);

stem(ny,y2,'.'),gridon;

xlabel('n');ylabel('y2');

title('y2=[cos(n\pi/16)+cos(n\pi/2)]R_1_2_8(n)*0.5(1-cos(2n\pi/(N2-1))R_1_6(n)');

仿真结果、图形

图5.1.5由DFT进行线性卷积得到的实验图形

2、观察以上方法计算的结果,是否一致,如果不一致,是什么原因?

如果使得四种方式计算出的系统的输出完全相同,如何选择有关参数?

结果分析和结论

以上实验计算的结果是一致的。

使得四种方式计算出的系统的输出完全相同,在计算DFT和IDFT时应先对序列补零,新序列长>=输入信号序列长+系统单位冲击响应序列长-1.

3、观察输入信号和输出信号,从幅度和相位角度解释输出信号相对于输入信号的变化?

为什么两输入信号输入到系统中的输出信号类似?

(画出此FIR系统的幅频特性,从系统对不同频率分量的响应方面分析。

仿真结果、图形

图5.3.1系统函数的频谱特性

由图可知这是一个升余弦低通滤波器

图5.3.2x1的输入输出幅度及相位比较

结果分析和结论

(一)输入信号经过该系统后发生了相位的移动和幅值的增加。

以x1为例分析:

输入

w=

由图5.3.2可以看出

1.幅度变化:

从系统函数幅值图H(z)中找到w=

处对应的点纵坐标为6.32.即理论上x1经过该系统幅值变为原来的6.32倍。

观察x1与y1的信号图,可看出输出信号序列起始和末尾的7个点都失真。

2.相位变化:

对系统函数相位图:

对应

处phase(H)的相位为-1.5487,化为角度数约为88.77度。

即理论上x1经过该系统产生88.77度相移。

观察x1与y1的信号图,可看出实际相移约为90度。

(2)输出信号类似

由图5.3.1可以看出系统函数H(z)是升余弦低通滤波器

(5.3.1)

(5.3.2)

理论上讲,经过低通滤波器

,所以经过低通滤波器后

(5.3.3)

所以使得两者的输出相似。

遇到的问题、解决方法及收获

1、在调用conv、filter函数时,忽略了新的序列的长度问题,错误提示下改正。

2、初步了解FIR系统,明白其非递归性

3、学会了正确使用conv、filter函数,conv函数记得新生成的序列的长度需要重新定义,filter函数在调用前对原来的序列补零。

4、学会了用圆周卷积计算线性卷积,进一步加深DFT和IDFT的计算使用

5、直观的感受了信号经过低通滤波器后的变化,加深了对低通滤波器的了解和学习。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 表格类模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1