武汉大学信号与系统matlab实验报告剖析.docx

上传人:b****6 文档编号:6646501 上传时间:2023-01-08 格式:DOCX 页数:17 大小:250.36KB
下载 相关 举报
武汉大学信号与系统matlab实验报告剖析.docx_第1页
第1页 / 共17页
武汉大学信号与系统matlab实验报告剖析.docx_第2页
第2页 / 共17页
武汉大学信号与系统matlab实验报告剖析.docx_第3页
第3页 / 共17页
武汉大学信号与系统matlab实验报告剖析.docx_第4页
第4页 / 共17页
武汉大学信号与系统matlab实验报告剖析.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

武汉大学信号与系统matlab实验报告剖析.docx

《武汉大学信号与系统matlab实验报告剖析.docx》由会员分享,可在线阅读,更多相关《武汉大学信号与系统matlab实验报告剖析.docx(17页珍藏版)》请在冰豆网上搜索。

武汉大学信号与系统matlab实验报告剖析.docx

武汉大学信号与系统matlab实验报告剖析

实验一连续时间信号的表示及可视化

(1)单位冲激信号

程序代码:

t1=-10;t2=10;t0=0;

dt=0.01;%定义时间常量

t=-10:

dt:

10;%对时间t赋值

n=length(t);%计算时间长度

y=zeros(1,n);%计算x(t)所对应的函数值

y(1,(-t0-t1)/dt+1)=1/dt;

%定义冲激点与冲激的大小

plot(t,x);xlabel('t');ylabel('y(t)');%绘制函数曲线的取值范围

axis([-10,10,-5,105])%设置坐标轴

title('单位冲激函数');

(2)单位阶跃信号

程序代码:

t=-5:

0.1:

5;%对时间变量赋值

y=(t>=0);%计算变量所对应的函数值

plot(t,y);xlabel('t');ylabel('y(t)');

%绘制函数曲线

axis([-5,5,-0.5,1.5])%设置坐标轴的取值范围

title('单位阶跃信号');

(3)指数信号

(分别取a>0及a<0)

a>0时,程序代码:

t=-5:

0.1:

5;%对时间变量赋值

y=exp(0.707*t);%计算变量所对应的函数值

plot(t,y);xlabel('t');

ylabel('y(t)');%绘制函数曲线

title('指数信号a>0');

a<0时

程序代码:

t=-5:

0.1:

5;%对时间变量赋值

y=exp(-0.707*t);%计算变量所对应的函数值

plot(t,y);xlabel('t');

ylabel('y(t)');%绘制函数曲线

title('指数信号a<0');

(4)单位矩形信号

程序代码:

t=-5:

0.01:

5;%对时间变量赋值

y=(t>=-3&t<=3);%计算变量所对应的函数值

plot(t,y);xlabel('t');

ylabel('y(t)');%绘制函数曲线

axis([-5,5,-0.5,1.5])%设置坐标轴的取值范围

title('单位矩形信号');

(5)抽样信号

程序代码:

t=-4:

0.01:

4;%对时间变量赋值

y1=sin(pi*t)./(pi*t);%计算变量所对应的函数值

y2=0;%定义过时间坐标轴

plot(t,y1,t,y2);xlabel('t');ylabel('y(t)');%绘制函数曲线

title('抽样信号');

当ω=π时当ω=2π时

分析:

当ω取不同的值时,抽样函数具有不同的过零点,其中第一图中,第一个过零点为t=1;第二图中,第一个过零点为t=0.5。

(6)正弦函数

(分别画出不同周期个数的波形)

程序代码:

t=0:

0.01:

1;%对时间变量赋值

y=sin(2*pi*1*t);%计算变量所对应的函数值

plot(t,y);xlabel('t');ylabel('y(t)');%绘制函数曲线

title('正弦函数');

当f=1时当f=2时

分析:

f取不同的值时,正弦函数具有不同的周期,f越大周期越小。

实验一总结:

连续时间函数的自变量为一定范围内的实数;其图形的绘制不止一个,我在实验中主要采用了plot函数进行编程和绘图。

实验中要注意函数的表示,可以调用matlab提供的函数也可以根据定义采用逻辑表达式实现函数图像的绘制。

同时要注意坐标轴的取值范围,要让图像尽可能的直观。

由于实验中的部分函数时有函数表达式的方式给出,所以要注意,(*)、(/)与(.*)、(./)等的区别,前者用于矩阵的计算,后者用于具体值的计算。

实验二离散时间信号的表示及可视化

(1)单位样值序列

程序代码:

n=-5:

5;%定义时间变量

y=(n==0);%对序列y(n)赋值

stem(n,y);xlabel('n');

ylabel('y(n)');%绘制棒状图

title('单位样值序列');

(2)单位阶跃序列

程序代码:

n=-5:

5;%定位时间变量

y=(n>=0);%对序列y(n)赋值

stem(n,y);xlabel('n');

ylabel('y(n)');%绘制棒状图

title('单位阶跃序列');

(2)实指数序列

(分别取

a<0时,程序代码:

n=-10:

10;%定位时间变量

y=exp(-0.707*n);%对序列y(n)赋值

stem(n,y);xlabel('n');

ylabel('y(n)');%绘制棒状图

title('实指数序列a

a>0时,程序代码:

n=-10:

10;%定位时间变量

y=exp(0.707*n);%对序列y(n)赋值

stem(n,y);xlabel('n');

ylabel('y(n)');%绘制棒状图

title('实指数序列a>o');

分析:

当a>0时,序列呈现上升趋势;当a<0时,序列呈现下降趋势。

(4)矩形序列

(分别取不同的N值)

程序代码:

N1=10;N2=15%设定矩形宽度N

n=-5:

20;%定位时间变量

y1=(n>=0&n=0&n

subplot(2,1,1),stem(n,y1,'.');xlabel('n');ylabel('y1(n)');%绘制棒状图

axis([-6,21,-0.2,1.2])%设置坐标轴的取值范围

title('矩形序列N=10');

subplot(2,1,2),stem(n,y2,'.');xlabel('n');ylabel('y2(n)');%绘制棒状图

axis([-6,21,-0.2,1.2])%设置坐标轴的取值范围

title('矩形序列N=15');

分析:

通过设置N的大小,可控制门函数的宽度。

(5)抽样序列

程序代码:

n=-8:

8;%定位时间变量

y=sin(20*n)./(20*n);%计算变量所对应的函数值

stem(n,y);xlabel('n');ylabel('y(n)');%绘制棒状图

title('抽样序列');

当ω=π时当ω=20时

分析:

在ω取不同的值时,序列的性质并没有本质上的区别,都是非周期序列。

(6)正弦序列

(分别取不同的

值)

程序代码:

n=-10:

10;%定位时间变量

y=sin(n*pi/6);%计算变量所对应的函数值

stem(n,y);xlabel('n');

ylabel('y(n)');%绘制棒状图

title('正弦函数');

 

当=π/6时

当ω=5*π/3时当ω=20时

分析:

不同ω取值会使正弦序列具有不同的性质,当2π/ω为有理数时,序列为周期序列;当2π/ω为无理数时,序列为非周期序列。

如本实验中,前两者为周期序列,周期分别为12、6,后者为非周期序列。

实验二总结:

本实验中要求绘制离散时间信号图,可以应用matlab中的stem函数来实现。

用matlab表示一离散序列x[n]时,可用两个向量来表示。

其中一个向量表示自变量n的取值范围,另一个向量表示序列x[n]的值。

之后可用stem(n,f)画出序列波形。

当序列是从n=0开始时,可以只用一个向量x来表示序列。

由于计算机内寸的限制,matlab无法表示一个无穷长的序列。

对于典型的离散时间信号,可用逻辑表达式来实现不同自变量时的取值。

虽然离散时间序列的图像时一系列的点,可是却也可以大致看出对应连续函数的轮廓,可见离散序列是连续函数在整数值处的抽样取值。

实验三系统的时域求解

(1)设

,求

,并画出

波形。

程序代码:

Nx=10;Nh=20;%定义Nx,Nh;

nh=0:

Nh-1;%定义时间变量

h=(0.9).^nh;%对序列h(n)赋值

x=ones(1,Nx);%对序列x(n)赋值

y=conv(x,h);%计算序列x(n),h(n)的卷积

subplot(2,2,1),stem(x);ylabel('x(n)');%绘制x(n)棒状图

subplot(2,2,2),stem(nh,h);ylabel('h(n)');%绘制h(n)棒状图

subplot(2,1,2),stem(y);ylabel('y(n)');%绘制y(n)棒状图

分析:

离散卷积是数字信号处理中的一个基本运算,MTLAB提供的计算两个离散序列卷积的函数是conv,其调用方式为y=conv(x,h)。

其中调用参数x,h为卷积运算所需的两个序列,返回值y是卷积结果。

两序列的卷积所得到的新序列的长度为原来两序列的长度之和减1。

该实验中使用的两个函数长度分别为10、20,其卷积结果长度为29。

(2)求因果线性移不变系统

的单位抽样响应

,并绘出

的幅频及相频特性曲线。

程序代码:

num=[10-1];%传递函数的分子系数

den=[10-0.81];%传递函数的分母系数

n=0:

20;%定义时间变量

x=(n==0);%定义x(n)为单位样值序列

h=filter(num,den,x);%计算系统的单位抽样响应

figure

(1)

clf%清除图像

stem(h,'.');xlabel('n');ylabel('h(n)');%绘制系统单位抽样响应的棒状图

title('系统的单位抽样响应y(n)');

Fs=1024;

figure

(2)

freqz(num,den,21,Fs);%绘制幅频相频特性曲线

分析:

本实验中采用了fliter(num,den,x)函数求系统对函数x(n)的响应,该函数可以用来求任何函数对不同系统的响应,该实验中也可以调用专门的函数来求系统的单位样值响应。

调用freqz()函数也可以直接绘制系统的频率特性。

实验三总结:

本实验主要是计算卷积和系统的单位样值响应。

前者调用了conv()函数,后者调用了filter()函数和freqz()函数。

通过这次试验,我熟悉了相应函数的使用,加深了对matlab强大功能体系的认识。

在调用freqz()函数时,我遇到了一定的问题。

我知道的freqz()有两种功能,一种是计算数字滤波器的频率响应,然后通过abs()和angle()分别求幅频、相频特性;另一种是直接用来绘制幅频和相频特性曲线。

本实验中我直接使用它绘制了频率特性曲线。

实验四信号的DFT分析

(1)计算余弦序列

的DFT。

分别对N=10、16、22时计算DFT,绘出

幅频特性曲线,分析是否有差别及产生差别的原因。

程序代码:

N=22;%定义序列长度N

n=0:

N-1;%定义时间变量

x=cos(pi/8*n);%对序列x(n)赋值

X=fft(x,N);%计算序列向量x(n)的N点DFT变换

figure

(1)

stem(X);xlabel('k');ylabel('X(k)');%绘制x(n)的DFT变换后的图像

title('x(n)的DFT变换');

w=2*pi*n/N;%定义采样点

Xf=abs(X);%计算幅频特性

figure

(2)

stem(w,Xf);xlabel('w');ylabel('Xf');%绘制系统的幅频特性曲线

title('幅频特性');

当N=10时,

当N=16时

当N=22时

分析:

从上图可以看出,当N=10和N=22时,原函数的离散傅里叶变换和幅频特性没有多大的区别,只是由于22点比10点取值点多,更容易看清序列点的大致走向。

而当取N=16点时的图像与另外两个取值时的图像有较大的区别。

再观察原函数,可见16为8的倍数,当N取16时,原函数x的取值呈现了较大的对称性,此时旋转因子也呈现了较大的对称性,这样当旋转因子矩阵和原函数向量点乘时,出现了相互抵消现象,导致了图中出现的情况。

实验四总结:

该实验中采用了fft()函数,用来实现函数的DFT变换。

刚开始的时候,由于没有认真审题,我把该题中的图像也绘成了连续曲线,后来才仔细审题发现了问题,并对源程序进行了修正,从而绘出了上面的图像。

由此可以看出干什么事情都还是需要仔细的。

由于本实验中使用了fft()函数,加深了我对快速傅里叶变换的理解,对于自学有很大的帮助。

观察图像时,要抓住关键点,不能只是注意图中点的疏密变化。

实验五系统时域解的快速卷积求法

(1)用快卷积法计算系统响应

,已知:

要求取不同的L点数,并画出

波形,分析是否有差别及产生差别的原因。

程序代码:

nx=0:

15;%定位时间变量,既x(n)序列的时间序列

xn=sin(0.4*nx);%对序列x(n)赋值

nh=0:

20;%定位时间变量,既h(n)序列的时间序列

hn=(0.9).^nh;%对序列h(n)赋值

tic,%卷积计时开始

yn=conv(xn,hn);%直接调用函数conv计算卷积

toc,%卷积计时结束

M=length(xn);N=length(hn);%求序列x(n),h(n)的长度

L=pow2(nextpow2(M+N-1));%取L为大于等于且最接近(M+N-1)的2的正次幂,即L=64

tic,%快速卷积计时开始

Xk=fft(xn,L);%L点FFT[x(n)]

Hk=fft(hn,L);%L点FFT[h(n)]

Yk=Xk.*Hk;%频域相乘得Y(k)

yn=ifft(Yk,L);%L点IFFT得到卷积结果y(n)

toc,%快速卷积计时结束

subplot(2,2,1),stem(nx,xn,'.');ylabel('x(n)');%绘制x(n)的棒状图

subplot(2,2,2),stem(nh,hn,'.');ylabel('x(n)');%绘制h(n)的棒状图

subplot(2,1,2);ny=1:

L;stem(ny,real(yn),'.');ylabel('y(n)');%绘制y(n)的棒状图

取L=64取L=32

取L=36

 

计时结果:

Elapsedtimeis0.000163seconds.

Elapsedtimeis0.000058seconds.

分析:

该实验中通过对L点设置不同的值,绘出了上面两幅图像,由图像可以看出,当L大于原来两序列之和减1时,多出来的部分的值都为0;当L小于原来两序列之和减1时,则由于重叠会使一部分点不能显示出来;当L恰好等于原来两个序列之和减1时,则序列卷积结果恰好可以完整的表示卷积结果。

通过计时也可以看出应用快速傅里叶变换可以在很大程度上上节约计算时间,对于大型的运算使用起来具有很明显的优势。

实验五总结:

通过这次实验,我学会了用快速卷积法计算离散时间系统的响应,并通过对取不同长度值时的结果进行分析,加深了对快速卷积法应用条件的理解。

同时,通过对普通方式计算卷积和应用快速卷积计算过程的计时,感受到了快速卷积计算速度之快。

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

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

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

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