离散时间信号通过线性时不变系统实验报告教材.docx
《离散时间信号通过线性时不变系统实验报告教材.docx》由会员分享,可在线阅读,更多相关《离散时间信号通过线性时不变系统实验报告教材.docx(10页珍藏版)》请在冰豆网上搜索。
![离散时间信号通过线性时不变系统实验报告教材.docx](https://file1.bdocx.com/fileroot1/2023-2/4/be2bdf2c-ee90-460b-8ab5-56d7e9e44059/be2bdf2c-ee90-460b-8ab5-56d7e9e440591.gif)
离散时间信号通过线性时不变系统实验报告教材
离散时间信号通过线性时不变系统
1.1实验目的
1、通过本实验,进一步加深对离散线性时不变系统的理解。
2、掌握利用线性卷积求解离散线性时不变系统输出的方法。
3、掌握利用差分方程求解离散线性时不变系统输出的方法。
1.2实验原理与方法
离散时间系统的输出信号与输入信号之间的关系为:
离散时间线性时不变系统的特点是系统具有线性性质和线性时不变性质。
即满足线性叠加定理:
系统对输入信号的运算关系在整个过程中不随时间变化,即系统是时不变系统:
对于LTI系统,设系统的单位脉冲响应为h(n),则系统输入输出满足线性卷积关系:
还可以用一个N阶线性常系数差分方程来表示:
当a=0时,系统输入输出满足线性卷积的关系。
1.3实验内容及步骤
1、编制信号产生、卷积、求解差分方程和显示子程序
设模拟正弦信号:
,现以T为周期,对其进行采样,得到正弦序列为:
其中f为数字频率,w为数字角频率。
产生两个信号:
N取大于500.
设两个离散时间线性时不变系统分别为:
系统1:
系统2:
其中:
2、实验内容
(1)令
分别通过1、2(注意:
通过系统1可以用线性卷积求解,通过系统2必须用差分方程求解),注意系统1、2输出信号的区别和共性。
#include
#include
#include
#definepi3.1415926
voidconv(floatu[],floatv[],floatw[],intm,intn);
//voidplot(intxlenth,float*y,char*name,intgain,char*xlabel,char*ylabel);
voidmain()
{
inti,j;
intm,n;
intgain=1;
inty11,y22;
charname='f';
charxlabel='X',ylabel='Y';
floatxa[650]={0.0},xb[650]={0.0},h[650]={0.0},y1[650]={0.0},y2[650]={0.0};
for(i=0;i<600;i++)
xa[i]=sin(2*pi/55.0*i);
for(i=0;i<600;i++)
xb[i]=sin(2*pi/55.0*i)+sin(2*pi*20.0/55.0*i);
for(j=0;j<=49;j++)
h[j]=1.0;
m=sizeof(xa)/sizeof(xa[0]);
n=sizeof(xb)/sizeof(xb[0]);
//a=sizeof(h)/sizeof(h[0]);
y11=sizeof(y1)/sizeof(y1[0]);
y22=sizeof(y2)/sizeof(y2[0]);
conv(xa,h,y1,m,n);
conv(xb,h,y2,m,n);
y11=sizeof(y1)/sizeof(y1[0]);
y22=sizeof(y2)/sizeof(y2[0]);
//plot(y11,y1,s,gain,xlabel,ylabel);
initgraph(1000,500);
initgraph(960,480,SHOWCONSOLE);//初始化图像
setbkcolor(WHITE);//用背景色清空屏幕
cleardevice();//用背景色清空屏幕
setcolor(BLACK);
outtextxy(480,10,name);//图像名
outtextxy(900,220,xlabel);//
outtextxy(5,10,ylabel);//
line(0,240,960,240);//画横坐标轴
line(30,0,30,480);//画纵坐标轴
setlinestyle(PS_DASHDOT);
setlinestyle(PS_SOLID);
setlinecolor(BLUE);
for(i=0;i<650;i++)
line(100+i,50,100+i,xa[i]*25+50);
for(i=0;i<650;i++)
line(100+i,150,100+i,xb[i]*25+150);
for(i=0;i<650;i++)
line(100+i,280,100+i,y1[i]*5+280);
for(i=0;i<650;i++)
line(100+i,400,100+i,y2[i]*5+400);
getchar();
closegraph;
//卷积子程序
}
voidconv(floatu[],floatv[],floatw[],intm,intn)
{
inti,j;
intk=m+n-1;
for(i=0;ifor(j=max(0,i+1-n);j<=min(i,m-1);j++)
{
w[i]+=u[j]*v[i-j];
}
}
//画图函数参数xlength:
序列长度y:
序列幅度s:
图像名gain:
y坐标轴增益,用来显示y坐标xlabel:
x轴坐标标识符ylabel:
y轴坐标标识符
voidplot(intxlenth,float*y,char*name,intgain,char*xlabel,char*ylabel)
{
inti=0;
intj=0;
charss[6];
initgraph(960,480,SHOWCONSOLE);//初始化图像
setbkcolor(WHITE);//用背景色清空屏幕
cleardevice();//用背景色清空屏幕
setcolor(BLACK);
outtextxy(480,10,name);//图像名
outtextxy(900,220,xlabel);//
outtextxy(5,10,ylabel);//
line(0,240,960,240);//画横坐标轴
line(30,0,30,480);//画纵坐标轴
setlinestyle(PS_DASHDOT);
for(i=0;iif(!
(i%50)){
sprintf(ss,"%d",i);
outtextxy(i+30,460,ss);
line(i+30,0,i+30,480);
}
}
for(i=0;i<480;i++){
if(!
(i%40)){
line(0,i,960,i);
}
}
setorigin(30,240);
setaspectratio(1,-1);//并未将outtextxy进行反转,outtextxy用的原来的坐标
setlinestyle(PS_SOLID);
setlinecolor(BLUE);
for(i=0;iline(i,y[i]*gain,i+1,y[i+1]*gain);
}
}
运行结果:
结论:
单频信号通过系统1和系统2输出结果的频率相同。
系
统1存在过冲,系统2效果更好。
(2)令
分别通过1、2,注意系统1、2输出信号的区别和共性与
(1)有何不同之处。
#include
#include
#include
#definepi3.1415926
voidmain()
{inti,j,m;
intgain=1;
inty11,y22;
charname='f';
charxlabel='X',ylabel='Y';
floatxa[650]={0.0},xb[650]={0.0},y1[650]={0.0},y2[650]={0.0},a[650]={0.0},b[650]={0.0};
for(i=0;i<600;i++)
xa[i]=sin(2*pi/55.0*i);
for(i=0;i<600;i++)
xb[i]=sin(2*pi/55.0*i)+sin(2*pi*20.0/55.0*i);
b[0]=0.0223,b[1]=0.01,b[2]=0.0223,a[1]=-1.7007;a[2]=0.7613;
y1[0]=b[0]*xa[0];
for(m=1;m<650;m++)
{for(j=1;((m-j+1)>0)&&j<3;j++)
{y1[m]=y1[m]+b[j]*xa[m-i];
}
for(i=1;((m-i)>0)&&i<3;i++)
{y1[m]=y1[m]-a[i]*y1[m-i];
}
}
y2[0]=b[0]*xb[0];
for(m=1;m<650;m++)
{for(j=1;((m-j+1)>0)&&j<3;j++)
{y2[m]=y2[m]+b[j]*xb[m-i];
}
for(i=1;((m-i)>0)&&i<3;i++)
{y2[m]=y2[m]-a[i]*y2[m-i];
}
}
initgraph(1000,800);
initgraph(960,480,SHOWCONSOLE);//初始化图像
setbkcolor(WHITE);//用背景色清空屏幕
cleardevice();//用背景色清空屏幕
setcolor(BLACK);
outtextxy(480,10,name);//图像名
outtextxy(900,220,xlabel);//
outtextxy(5,10,ylabel);//
line(0,240,960,240);//画横坐标轴
line(30,0,30,480);//画纵坐标轴
setlinestyle(PS_DASHDOT);
setlinestyle(PS_SOLID);
setlinecolor(BLUE);
for(i=0;i<650;i++)
line(100+i,50,100+i,xa[i]*25+50);
for(i=0;i<650;i++)
line(100+i,150,100+i,xb[i]*25+150);
for(i=0;i<650;i++)
line(100+i,280,100+i,y1[i]*5+280);
for(i=0;i<650;i++)
line(100+i,400,100+i,y2[i]*5+400);
getchar();
}
运行结果:
结论:
信号有两个频率分量f1和f2,f1与
频率相同,过系统1和系统2后,输出结果与
过系统1和系统2类似,但
过系统后有毛刺,曲线不光滑,且过系统2曲线比过系统1曲线光滑。
说明,这两个系统相当于一个低通滤波器。
1.4实验总结
通过本次实验对离散时间信号通过线性时不变系统的原理有了更深的了解。
掌握了使用C语言求解线性卷积的方法。
对于单频率信号和双频信号通过相同系统后输出的波形的不同也有了更好的认识。