实验一离散时间信号的分析.docx

上传人:wj 文档编号:2504072 上传时间:2023-05-03 格式:DOCX 页数:19 大小:1.10MB
下载 相关 举报
实验一离散时间信号的分析.docx_第1页
第1页 / 共19页
实验一离散时间信号的分析.docx_第2页
第2页 / 共19页
实验一离散时间信号的分析.docx_第3页
第3页 / 共19页
实验一离散时间信号的分析.docx_第4页
第4页 / 共19页
实验一离散时间信号的分析.docx_第5页
第5页 / 共19页
实验一离散时间信号的分析.docx_第6页
第6页 / 共19页
实验一离散时间信号的分析.docx_第7页
第7页 / 共19页
实验一离散时间信号的分析.docx_第8页
第8页 / 共19页
实验一离散时间信号的分析.docx_第9页
第9页 / 共19页
实验一离散时间信号的分析.docx_第10页
第10页 / 共19页
实验一离散时间信号的分析.docx_第11页
第11页 / 共19页
实验一离散时间信号的分析.docx_第12页
第12页 / 共19页
实验一离散时间信号的分析.docx_第13页
第13页 / 共19页
实验一离散时间信号的分析.docx_第14页
第14页 / 共19页
实验一离散时间信号的分析.docx_第15页
第15页 / 共19页
实验一离散时间信号的分析.docx_第16页
第16页 / 共19页
实验一离散时间信号的分析.docx_第17页
第17页 / 共19页
实验一离散时间信号的分析.docx_第18页
第18页 / 共19页
实验一离散时间信号的分析.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验一离散时间信号的分析.docx

《实验一离散时间信号的分析.docx》由会员分享,可在线阅读,更多相关《实验一离散时间信号的分析.docx(19页珍藏版)》请在冰点文库上搜索。

实验一离散时间信号的分析.docx

武汉工程大学

信号分析与处理实验一

专业:

通信02班

学生姓名:

李瑶华

学号:

1304200113

完成时间:

2023年5月3日

实验一:

离散时间信号的分析

一、实验目的

1.认识常用的各种信号,理解其数学表达式和波形表示。

2.掌握在计算机中生成及绘制数字信号波形的方法。

3.掌握序列的简单运算及计算机实现与作用。

4.理解离散时间傅立叶变换、Z变换及它们的性质和信号的频域特性。

二、实验设备

计算机,MATLAB语言环境。

三、实验基础理论

1.序列的相关概念

2.常见序列

l单位取样序列

l单位阶跃序列

l单位矩形序列

l实指数序列

l复指数序列

l正弦型序列

3.序列的基本运算

l移位y(n)=x(n-m)

l反褶y(n)=x(-n)

l和

l积

l标乘y(n)=mx(n)

l累加

l差分运算

4.离散傅里叶变换的相关概念

l定义

l两个性质

1)

2)当x(n)为实序列时,的幅值在区间内是偶对称函数,相位是奇对称函数。

5.Z变换的相关概念

l定义(双边Z变换)

(单边Z变换)

四、实验内容与步骤

1.离散时间信号(序列)的产生

利用MATLAB语言编程产生和绘制单位样值信号、单位阶跃序列、指数序列、正弦序列及随机离散信号的波形表示。

1.单位取样序列的产生函数

function[x,n]=impseq(n0,n1,n2)

%产生x(n)=delta(n-n0);n1<=n,n0<=n2;

%[x,n]=impseq(n0,n1,n2)

if((n0n2)|(n1>n2))

error('参数必须满足n1<=n0<=n2')

end

n=[n1:

n2];

%x=[zeros(1,(n0-n1)),1,zeros(1,(n2-n0))];

x=[(n-n0)==0];

2.单位阶跃序列的产生函数

function[x,n]=stepseq(n0,n1,n2)

%产生x(n)=u(n-n0);n1<=n,n0<=n2;

%[x,n]=stepseq(n0,n1,n2)

if((n0n2)|(n1>n2))

error('参数必须满足n1<=n0<=n2')

end

n=[n1:

n2];

%x=[zeros(1,(n0-n1)),ones(1,(n2-n0+1))];

x=[(n-n0)>=0];

Matlab产生各种常见序列的程序

n=[-5:

5];

x1=impseq(0,-5,5);

subplot(2,2,1);stem(n,x1);title('单位取样序列');

xlabel('n');ylabel('x(n)');

n=[-3:

10];

x2=stepseq(0,-3,10);

subplot(2,2,2);stem(n,x2);title('单位阶跃序列');

xlabel('n');ylabel('x(n)');

n=[-10:

10];

x3=(0.5).^n;

subplot(2,2,3);stem(n,x3);title('实指数序列');

xlabel('n');ylabel('x(n)');

n=[0:

20];

x4=sin(0.3*n);

subplot(2,2,4);stem(n,x4);title('正弦序列');

xlabel('n');ylabel('x(n)');

Matlab产生复指数序列的程序

n=[0:

1:

20];

alpha=-0.1+0.5j;

x=exp(alpha*n);

subplot(2,2,1);stem(real(x));

title('实部');xlabel('n');

subplot(2,2,2);stem(imag(x));

title('虚部');xlabel('n');

subplot(2,2,3);stem(abs(x));

title('振幅');xlabel('n');

subplot(2,2,4);stem(n,(180/pi)*angle(x));

title('相位');xlabel('n');

Matlab产生随机离散信号的程序

n=[1:

10];x=rand(1,10);

figure;stem(n,x);xlabel('n');ylabel('x(n)');

title('随机序列');

grid

2.序列的运算

(1)利用MATLAB语言编程实现信号平滑运算。

程序

r=65;

d=0.8*(rand(r,1)-0.5);

m=0:

r-1;

s=2*m.*(0.9.^m);

x=s+d';

subplot(2,1,1);

plot(m,d','r-',m,s,'g--',m,x,'b-.');

xlabel('n');

ylabel('振幅');

legend('d[n]','s[n]','x[n]');

x1=[00x];x2=[0x0];x3=[x00];

y=(x1+x2+x3)/3;

subplot(2,1,2);

plot(m,y(2:

r+1),'r-',m,s,'g--');

legend('y[n]','s[n]');

xlabel('n');

ylabel('振幅');

(2)利用MATLAB语言编程实现信号的调制。

程序

Fm=10;Fc=100;Fs=500;k=0:

199;t=k/Fs;

x=sin(2*pi*Fm*t);

y=x.*cos(2*pi*Fc*t);

X=fft(x,256);

Y=fft(y,256);

subplot(2,2,1);

plot(x);xlabel('t(s)');ylabel('x');title('原信号');

subplot(2,2,2);

plot(X);plot([-128:

127],fftshift(abs(X)));xlabel('w');ylabel('X(jw)');title('原信号频谱');

subplot(2,2,3);

plot(y);xlabel('t(s)');ylabel('y');title('调制信号');

subplot(2,2,4);

plot(Y);plot([-128:

127],fftshift(abs(Y)));xlabel('w');ylabel('Y(jw)');title('已调信号频谱');

(3)利用MATLAB语言编程实现信号卷积运算。

序列卷积的产生函数

function[y,ny]=conv_m(x,nx,h,nh)

%信号处理的卷积程序

%[y,ny]=conv_m(x,nx,h,nh)

%y=卷积结果

%ny=y的基底(support)

%x=基底nx上的第一个信号

%nx=x的基底

%h=基底nh上的第二个信号

%nh=h的基底

nyb=nx

(1)+nh

(1);nye=nx(length(x))+nh(length(h));

ny=[nyb:

nye];

y=conv(x,h);

Matlab实现线性卷积的程序

x=[00.511.50];nx=0:

4;

h=[11100];nh=0:

4;

[y,ny]=conv_m(x,nx,h,nh);

subplot(2,2,1);stem(nx,x);title('序列x');xlabel('n');ylabel('x(n)');

subplot(2,2,2);stem(nh,h);title('序列h');xlabel('n');ylabel('h(n)');

subplot(2,2,3);stem(ny,y);title('两序列卷积');xlabel('n');ylabel('y(n)');

(4)利用MATLAB语言编程实现信号离散傅立叶的正反变换。

离散傅立叶正变换的产生函数

function[Xk]=dft(xn,N)

n=[0:

1:

N-1];k=n;

WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;

离散傅立叶反变换的产生函数

function[Xk]=idft(xn,N)

n=[0:

1:

N-1];k=n;WN=exp(-j*2*pi/N);nk=n'*k;

WNnk=WN.^(-nk);Xk=xn*WNnk/N;

(5)利用MATLAB语言编程实现信号的圆周移位,圆周卷积,验证DFT的圆周时移、圆周卷积性质和圆周卷积与线性卷积的关系。

functionm=sigmod(n,N);

m=rem(n,N);m=m+N;m=rem(m,N);

functiony=cirshift(x,m,N);

iflength(x)>N

error('Nmustbegreaterthenlength(x)');

end

x=[xzeros(1,N-length(x))];n=[0:

N-1];

n=sigmod(n-m,N);y=x(n+1);

Matlab实现圆周移位的程序

n=[0:

10];M=6;N=11;

x=15*0.4.^n;y=cirshift(x,M,N);

subplot(2,1,1);stem(n,x);xlabel('n');ylabel('x(n)');title('原序列波');

subplot(2,1,2);stem(n,y);xlabel('n');ylabel('y(n)');

title('圆周移位序波形')

圆周卷积

functiony=circonvt(x1,x2,N)

iflength(x1)>N

error('length(x1)isnotgreatthanN')

end

iflength(x2)>N

error('length(x2)isnotgreaterthanN')

end

x1=[x1,zeros(1,N-length(x1))];

x2=[x2,zeros(1,N-length(x2))];m=[0:

N-1];

x2=x2(mod(-m,N)+1);H=zeros(N,N);

forn=1:

N;

H(n,:

)=cirshift(x2,n-1,N);

end

y=x1*H';

Matlab实现圆周卷积的程序

x1=[2,4,3];x2=[4351];

disp('N=7')

N=7;y=circonvt(x1,x2,N)

subplot(3,1,1);stem(x1);xlabel('n');ylabel('x1(n)');

subplot(3,1,2);stem(x2);xlabel('n');ylabel('x2(n)');

subplot(3,1,3);stem(y);xlabel('n');ylabel('y(n)');title('圆周卷积');

(6)验证一个周期实序列奇偶部分的DFT与此序列本身的DFT之间的关系。

function[x1,x2]=circevod(x)

ifany(imag(x)~=0)

error('不是实序列0')

end

N=length(x);

n=0:

(N-1);

x1=0.5*(x+x(sigmod(-n,N)+1));x2=0.5*(x-x(sigmod(-n,N)+1));

n=[0:

20];N=length(n);x=15*0.7.^n;

[x1,x2]=circevod(x);

subplot(2,2,1);stem(n,x1);title('奇部');xlabel('n');ylabel('xev(n)');

subplot(2,2,2);stem(n,x2);title('偶部');xlabel('n');ylabel('xod(n)');

holdon;

plot(n,zeros(1,N));holdoff;

Xk1=dft(x1,N);Xk2=dft(x2,N);Xk=dft(x,N);

subplot(2,2,3);stem(n,real(Xk1));title('偶部分的DFT');

xlabel('n');ylabel('Xkev(k)');

subplot(2,2,4);stem(n,imag(Xk2));title('奇部分的DFT');

xlabel('n');ylabel('Xkod(k)');

holdon;

plot(n,zeros(1,N));holdoff;

(7)利用MATLAB语言编程实现信号的Z变换及其反变换、Z变换的零、极点分布。

Matlab实现Z变换的程序

Z=ztrans(sym('n-3'))Z=z/(z-1)^2-(3*z)/(z-1)

Z=simplify(Z)Z=-(z*(3*z-4))/(z-1)^2

Matlab实现逆Z变换的程序

Matlab实现零-极点分布的程序(以为例)

b=[050];a=[11-6];figure;

zplane(b,a);%由分子分母多项式的系数画出零-极点图title('零-极点分布图);

五、实验扩展与思考

1.编程产生方波信号序列和锯齿波信号序列。

x=[0:

1/256:

8];y1=square(pi*x);

subplot(2,1,1);plot(x,y1);axis([0,8,-2,2]);title('方波');

xlabel('x');ylabel('y1');gridon;

y2=sawtooth(pi*x);

subplot(2,1,2);plot(x,y2);title('锯齿波');

xlabel('x');ylabel('y2');gridon;

2.实验中你所产生得正弦序列的频率是多少?

怎样才能改变它?

分别是哪些参数控制该序列的相位、振幅和周期?

答:

正弦序列,频率=0.3/2,通过改变改变频率f;控制序列相位,A控制序列振幅,控制序列周期。

3.编程实现序列长度为N的L点的正反离散傅里叶变换,并分析讨论所得出的结果,其中L≥N,如L=8,N=6。

function[Xk]=dft(xn,N)

n=[0:

1:

L-1];k=n;

WN=exp(-j*2*pi/N);nk=n'*k;

WNnk=WN.^nk;

Xk=xn*WNnk;

function[Xk]=idft(xn,N)

n=[0:

1:

L-1];k=n;

WN=exp(-j*2*pi/N);nk=n'*k;

WNnk=WN.^(-nk);

Xk=xn*WNnk/N;

4.由实验说明离散傅里叶变换的对称关系,说明序列的时域和频域的关联特性。

答:

(一)离散傅里叶变换具有共轭对称性

(1)复共轭序列的DFT。

设为x(n)的复共轭序列,长度为N,X(k)=DFT[x(n)],则。

(2)DFT的共轭对称性。

定义圆周共轭对称分量和圆周共轭反对称分量

则DFT[]=Re[X(k)],

DFT[]=jIm[X(k)]。

(二)序列的时域和频域的关联特性。

(1)时域卷积对应频域相乘

设,y(n)=x(n)*h(n),

(2)时域相乘对应于的频域卷积

设,y(n)=x(n)h(n),

六、总结实验中的主要结论、实践技能和心得体会。

答:

1、实验中的主要结论:

圆周卷积与线性卷积之间的关系。

设圆周卷积,线性卷积

则,及当

()

2、实践技能:

通过matlab软件的使用让我更好的理解了理论与实践工程设计的结合。

3、心得体会:

在使用matlab软件定义函数时,必须对函数的含义理解清楚,要不然很容易定义函数出现错误。

其次要对matlab自带函数的含义用法理解清楚。

这次实验我最大的收获就是对离散时间序列的理论基础的概念有了一个很好的复习和更深刻的认识。

遇到最大的问题就是定义函数时考虑不够全面。

但是我相信随着后面实验的进行,我能将matlab这个工具与课本的理论基础知识完美的结合起来。

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2