信号与系统实验报告.docx
《信号与系统实验报告.docx》由会员分享,可在线阅读,更多相关《信号与系统实验报告.docx(34页珍藏版)》请在冰豆网上搜索。
信号与系统实验报告
实验三 常见信号的MATLAB表示及运算
一、实验目的
1.熟悉常见信号的意义、特性及波形
2.学会使用MATLAB表示信号的方法并绘制信号波形
3.掌握使用MATLAB进行信号基本运算的指令
4.熟悉用MATLAB实现卷积积分的方法
二、实验原理
根据MATLAB的数值计算功能和符号运算功能,在MATLAB中,信号有两种表示方法,一种是用向量来表示,另一种则是用符号运算的方法。
在采用适当的MATLAB语句表示出信号后,就可以利用MATLAB中的绘图命令绘制出直观的信号波形了。
1.连续时间信号
从严格意义上讲,MATLAB并不能处理连续信号。
在MATLAB中,是用连续信号在等时间间隔点上的样值来近似表示的,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。
在MATLAB中连续信号可用向量或符号运算功能来表示。
⑴向量表示法
对于连续时间信号
,可以用两个行向量f和t来表示,其中向量t是用形如
的命令定义的时间范围向量,其中,
为信号起始时间,
为终止时间,p为时间间隔。
向量f为连续信号
在向量t所定义的时间点上的样值。
⑵符号运算表示法
如果一个信号或函数可以用符号表达式来表示,那么我们就可以用前面介绍的符号函数专用绘图命令ezplot()等函数来绘出信号的波形。
⑶常见信号的MATLAB表示
单位阶跃信号
单位阶跃信号的定义为:
方法一:
调用Heaviside(t)函数
首先定义函数Heaviside(t)的m函数文件,该文件名应与函数名同名即Heaviside.m。
%定义函数文件,函数名为Heaviside,输入变量为x,输出变量为y
functiony=Heaviside(t)
y=(t>0);%定义函数体,即函数所执行指令
%此处定义t>0时y=1,t<=0时y=0,注意与实际的阶跃信号定义的区别。
方法二:
数值计算法
在MATLAB中,有一个专门用于表示单位阶跃信号的函数,即stepfun()函数,它是用数值计算法表示的单位阶跃函数
。
其调用格式为:
stepfun(t,t0)
其中,t是以向量形式表示的变量,t0表示信号发生突变的时刻,在t0以前,函数值小于零,t0以后函数值大于零。
有趣的是它同时还可以表示单位阶跃序列
,这只要将自变量以及取样间隔设定为整数即可。
符号函数
符号函数的定义为:
在MATLAB中有专门用于表示符号函数的函数sign(),由于单位阶跃信号(t)和符号函数两者之间存在以下关系:
,因此,利用这个函数就可以很容易地生成单位阶跃信号。
2.离散时间信号
离散时间信号又叫离散时间序列,一般用
表示,其中变量k为整数,代表离散的采样时间点(采样次数)。
在MATLAB中,离散信号的表示方法与连续信号不同,它无法用符号运算法来表示,而只能采用数值计算法表示,由于MATLAB中元素的个数是有限的,因此,MATLAB无法表示无限序列;另外,在绘制离散信号时必须使用专门绘制离散数据的命令,即stem()函数,而不能用plot()函数。
单位序列
单位序列
)的定义为
单位阶跃序列
单位阶跃序列
的定义为
3.卷积积分
两个信号的卷积定义为:
MATLAB中是利用conv函数来实现卷积的。
功能:
实现两个函数
和
的卷积。
格式:
g=conv(f1,f2)
说明:
f1=f1(t),f2=f2(t) 表示两个函数,g=g(t)表示两个函数的卷积结果。
三、实验内容
1.分别用MATLAB的向量表示法和符号运算功能,表示并绘出下列连续时间信号的波形:
⑴
⑵
(1)t=-1:
0.01:
10;
t1=-1:
0.01:
-0.01;
t2=0:
0.01:
10;
f1=[zeros(1,length(t1)),ones(1,length(t2))];
f=(2-exp(-2*t)).*f1;
plot(t,f)
axis([-1,10,0,2.1])
symst;
f=sym('(2-exp(-2*t))*heaviside(t)');
ezplot(f,[-1,10]);
(2)
t=-2:
0.01:
8;
f=0.*(t<0)+cos(pi*t/2).*(t>0&t<4)+0.*(t>4);
plot(t,f)
symst;
f=sym('cos(pi*t/2)*[heaviside(t)-heaviside(t-4)]');
ezplot(f,[-2,8]);
2.分别用MATLAB表示并绘出下列离散时间信号的波形:
⑵
⑶
(2)t=0:
8;
t1=-10:
15;
f=[zeros(1,10),t,zeros(1,7)];
stem(t1,f)
axis([-10,15,0,10]);
(3)t=0:
50;
t1=-10:
50;
f=[zeros(1,10),sin(t*pi/4)];
stem(t1,f)
axis([-10,50,-2,2])
3.已知两信号
,
,求卷积积分
,并与例题比较。
t1=-1:
0.01:
0;
t2=0:
0.01:
1;
t3=-1:
0.01:
1;
f1=ones(size(t1));
f2=ones(size(t2));
g=conv(f1,f2);
subplot(3,1,1),plot(t1,f1);
subplot(3,1,2),plot(t2,f2);
subplot(3,1,3),plot(t3,g);
与例题相比较,g(t)的定义域不同,最大值对应的横坐标也不同。
4.已知
,求两序列的卷积和。
N=4;
M=5;
L=N+M-1;
f1=[1,1,1,2];
f2=[1,2,3,4,5];
g=conv(f1,f2);
kf1=0:
N-1;
kf2=0:
M-1;
kg=0:
L-1;
subplot(1,3,1),stem(kf1,f1,'*k');xlabel('k');
ylabel('f1(k)');gridon
subplot(1,3,2),stem(kf2,f2,'*k');xlabel('k');
ylabel('f2(k)');gridon
subplot(1,3,3);stem(kg,g,'*k');xlabel('k');
ylabel('g(k)');gridon
实验心得:
第一次接触Mutlab这个绘图软件,觉得挺新奇的,同时,由于之前不太学信号与系统遇到一些不懂的问题,结合这些图对信号与系统有更好的了解。
实验四 连续时间信号的频域分析
一、 实验目的
1.熟悉傅里叶变换的性质
2.熟悉常见信号的傅里叶变换
3.了解傅里叶变换的MATLAB实现方法
二、 实验原理
从已知信号
求出相应的频谱函数
的数学表示为:
傅里叶反变换的定义为:
在MATLAB中实现傅里叶变换的方法有两种,一种是利用MATLAB中的SymbolicMathToolbox提供的专用函数直接求解函数的傅里叶变换和傅里叶反变换,另一种是傅里叶变换的数值计算实现法。
1.直接调用专用函数法
①在MATLAB中实现傅里叶变换的函数为:
F=fourier(f) 对f(t)进行傅里叶变换,其结果为F(w)
F=fourier(f,v) 对f(t)进行傅里叶变换,其结果为F(v)
F=fourier(f,u,v) 对f(u)进行傅里叶变换,其结果为F(v)
②傅里叶反变换
f=ifourier(F) 对F(w)进行傅里叶反变换,其结果为f(x)
f=ifourier(F,U) 对F(w)进行傅里叶反变换,其结果为f(u)
f=ifourier(F,v,u) 对F(v)进行傅里叶反变换,其结果为f(u)
注意:
(1)在调用函数fourier()及ifourier()之前,要用syms命令对所有需要用到的变量(如t,u,v,w)等进行说明,即要将这些变量说明成符号变量。
对fourier()中的f及ifourier()中的F也要用符号定义符sym将其说明为符号表达式。
(2)采用fourier()及fourier()得到的返回函数,仍然为符号表达式。
在对其作图时要用ezplot()函数,而不能用plot()函数。
(3)fourier()及fourier()函数的应用有很多局限性,如果在返回函数中含有δ(ω)等函数,则ezplot()函数也无法作出图来。
另外,在用fourier()函数对某些信号进行变换时,其返回函数如果包含一些不能直接表达的式子,则此时当然也就无法作图了。
这是fourier()函数的一个局限。
另一个局限是在很多场合,尽管原时间信号f(t)是连续的,但却不能表示成符号表达式,此时只能应用下面介绍的数值计算法来进行傅氏变换了,当然,大多数情况下,用数值计算法所求的频谱函数只是一种近似值。
2、傅里叶变换的数值计算实现法
严格说来,如果不使用symbolic工具箱,是不能分析连续时间信号的。
采用数值计算方法实现连续时间信号的傅里叶变换,实质上只是借助于MATLAB的强大数值计算功能,特别是其强大的矩阵运算能力而进行的一种近似计算。
傅里叶变换的数值计算实现法的原理如下:
对于连续时间信号f(t),其傅里叶变换为:
其中τ为取样间隔,如果f(t)是时限信号,或者当|t|大于某个给定值时,f(t)的值已经衰减得很厉害,可以近似地看成是时限信号,则上式中的n取值就是有限的,假定为N,有:
若对频率变量ω进行取样,得:
通常取:
,其中
是要取的频率范围,或信号的频带宽度。
采用MATLAB实现上式时,其要点是要生成f(t)的N个样本值
的向量,以及向量
,两向量的内积(即两矩阵的乘积),结果即完成上式的傅里叶变换的数值计算。
注意:
时间取样间隔τ的确定,其依据是τ必须小于奈奎斯特(Nyquist)取样间隔。
如果f(t)不是严格的带限信号,则可以根据实际计算的精度要求来确定一个适当的频率
为信号的带宽。
三、实验内容
1.编程实现求下列信号的幅度频谱
(1) 求出
的频谱函数F1(jω),请将它与上面门宽为2的门函数
的频谱进行比较,观察两者的特点,说明两者的关系。
(2)三角脉冲
(3)单边指数信号
(4)高斯信号
(1)symstw
Gt=sym('Heaviside(2*t+1)-Heaviside(2*t-1)');
Fw=fourier(Gt,t,w);
FFw=maple('convert',Fw,'piecewise');
FFP=abs(FFw);
ezplot(FFP,[-10*pi10*pi]);grid;
axis([-10*pi10*pi02.2])
与
的频谱比较,
的频谱函数F1(jω)最大值是其的1/2。
(2)
symstw;
Gt=sym('(1+t)*(Heaviside(t+1)-Heaviside(t))+(1-t)*(Heaviside(t)-Heaviside(t-1))');
Fw=fourier(Gt,t,w);
FFw=maple('convert',Fw,'piecewise');
FFP=abs(FFw);
ezplot(FFP,[-10*pi10*pi]);grid;
axis([-10*pi10*pi02.2])
(3)
symstw
Gt=sym('exp(-t)*Heaviside(t)');
Fw=fourier(Gt,t,w);
FFw=maple('convert',Fw,'piecewise');
FFP=abs(FFw);
ezplot(FFP,[-10*pi10*pi]);grid;
axis([-10*pi10*pi-12])
(4)
symstw
Gt=sym('exp(-t^2)');
Fw=fourier(Gt,t,w);
FFw=maple('convert',Fw,'piecewise');
ezplot(FFw,[-3030]);grid;
axis([-3030-12])
2.利用ifourier()函数求下列频谱函数的傅氏反变换
(1)
(2)
(1)
symstw
Fw=sym('-i*2*w/(16+w^2)');
ft=ifourier(Fw,w,t);
ft
运行结果:
ft=
-exp(4*t)*heaviside(-t)+exp(-4*t)*heaviside(t)
(2)
symstw
Fw=sym('((i*w)^2+5*i*w-8)/((i*w)^2+6*i*w+5)');
ft=ifourier(Fw,w,t);
ft
运行结果:
ft=
dirac(t)+(-3*exp(-t)+2*exp(-5*t))*heaviside(t)
实验心得matlab不但具有数值计算能力,还能建模仿真,能帮助我们理解不同时间信号的频域分析。
实验五连续时间系统的频域分析
一、实验目的
1.学习由系统函数确定系统频率特性的方法。
2.学习和掌握连续时间系统的频率特性及其幅度特性、相位特性的物理意义。
3.通过本实验了解低通、高通、带通、全通滤波器的性能及特点。
二、实验原理及方法
频域分析法与时域分析法的不同之处主要在于信号分解的单元函数不同。
在频域分析法中,信号分解成一系列不同幅度、不同频率的等幅正弦函数,通过求取对每一单元激励产生的响应,并将响应叠加,再转换到时域以得到系统的总响应。
所以说,频域分析法是一种变域分析法。
它把时域中求解响应的问题通过Fourier级数或Fourier变换转换成频域中的问题;在频域中求解后再转换回时域从而得到最终结果。
在实际应用中,多使用另一种变域分析法:
复频域分析法,即Laplace变换分析法。
所谓频率特性,也称频率响应特性,是指系统在正弦信号激励下稳态响应随频率变化的情况,包括幅度随频率的响应和相位随频率的响应两个方面。
利用系统函数也可以确定系统频率特性,公式如下:
幅度响应用
表示,相位响应用
表示。
本实验所研究的系统函数H(s)是有理函数形式,也就是说,分子、分母分别是m、n阶多项式。
要计算频率特性,可以写出
为了计算出
、
的值,可以利用复数三角形式的一个重要特性:
而
,则
利用这些公式可以化简高次幂,因此分子和分母的复数多项式就可以转化为分别对实部与虚部的实数运算,算出分子、分母的实部、虚部值后,最后就可以计算出幅度
、相位
的值了。
三、实验内容
a)
,m取值区间[0,1],绘制一组曲线m=0.1,0.3,0.5,0.7,0.9;
b)绘制下列系统的幅频响应对数曲线和相频响应曲线,分析其频率特性。
(1)
(2)
(3)
a)%design2.m
figure
alpha=[0.1,0.3,0.5,0.7,0.9];
colorn=['r''g''b''y''k'];%rgbymck(红,绿,蓝,黄,品红,青,黑)
forn=1:
5
b=[0alpha(n)];%分子系数向量
a=[alpha(n)-alpha(n)^21];%分母系数向量
printsys(b,a,'s')
[Hz,w]=freqs(b,a);
w=w./pi;
magh=abs(Hz);
zerosIndx=find(magh==0);
magh(zerosIndx)=1;
magh=20*log10(magh);
magh(zerosIndx)=-inf;
angh=angle(Hz);
angh=unwrap(angh)*180/pi;
subplot(1,2,1)
plot(w,magh,colorn(n));
holdon
subplot(1,2,2)
plot(w,angh,colorn(n));
holdon
end
subplot(1,2,1)
holdoff
xlabel('特征角频率(\times\pirad/sample)')
title('幅频特性曲线|H(w)|(dB)');
subplot(1,2,2)
holdoff
xlabel('特征角频率(\times\pirad/sample)')
title('相频特性曲线\theta(w)(degrees)');
b)
(1)%design1.m
b=[1,0];%分子系数向量
a=[1,1];%分母系数向量
printsys(b,a,'s')
[Hz,w]=freqs(b,a);
w=w./pi;
magh=abs(Hz);
zerosIndx=find(magh==0);
magh(zerosIndx)=1;
magh=20*log10(magh);%以分贝
magh(zerosIndx)=-inf;
angh=angle(Hz);
angh=unwrap(angh)*180/pi;%角度换算
figure
subplot(1,2,1)
plot(w,magh);
gridon
xlabel('特征角频率(\times\pirad/sample)')
title('幅频特性曲线|H(w)|(dB)');
subplot(1,2,2)
plot(w,angh);
gridon
xlabel('特征角频率(\times\pirad/sample)')
title('相频特性曲线\theta(w)(degrees)');
(2)%design1.m
b=[0,1,0];%分子系数向量
a=[1,3,2];%分母系数向量
printsys(b,a,'s')
[Hz,w]=freqs(b,a);
w=w./pi;
magh=abs(Hz);
zerosIndx=find(magh==0);
magh(zerosIndx)=1;
magh=20*log10(magh);%以分贝
magh(zerosIndx)=-inf;
angh=angle(Hz);
angh=unwrap(angh)*180/pi;%角度换算
figure
subplot(1,2,1)
plot(w,magh);
gridon
xlabel('特征角频率(\times\pirad/sample)')
title('幅频特性曲线|H(w)|(dB)');
subplot(1,2,2)
plot(w,angh);
gridon
xlabel('特征角频率(\times\pirad/sample)')
title('相频特性曲线\theta(w)(degrees)');
(3)%design1.m
b=[1,-1];%分子系数向量
a=[1,1];%分母系数向量
printsys(b,a,'s')
[Hz,w]=freqs(b,a);
w=w./pi;
magh=abs(Hz);
zerosIndx=find(magh==0);
magh(zerosIndx)=1;
magh=20*log10(magh);%以分贝
magh(zerosIndx)=-inf;
angh=angle(Hz);
angh=unwrap(angh)*180/pi;%角度换算
figure
subplot(1,2,1)
plot(w,magh);
gridon
xlabel('特征角频率(\times\pirad/sample)')
title('幅频特性曲线|H(w)|(dB)');
subplot(1,2,2)
plot(w,angh);
gridon
xlabel('特征角频率(\times\pirad/sample)')
title('相频特性曲线\theta(w)(degrees)');
实验心得:
虽然之前用公式转换到频域上分析,但是有时会觉得挺抽象的,不太好理解。
根据这些图像结合起来更进一步对信号的了解。
同时,这个在编程序时,虽然遇到一些问题,但是总算解决了。
实验六离散时间系统的Z域分析
一、实验目的
1.学习和掌握离散系统的频率特性及其幅度特性、相位特性的物理意义。
2.深入理解离散系统频率特性和对称性和周期性。
3.认识离散系统频率特性与系统参数之间的系统
4.通过阅读、修改并调试本实验所给源程序,加强计算机编程能力。
二、实验原理及方法
对于离散时间系统,系统单位冲激响应序列
的Fourier变换
完全反映了系统自身的频率特性,称
为离散系统的频率特性,可由系统函数
求出,关系式如下:
(6–1)
由于
是频率的周期函数,所以系统的频率特性也是频率的周期函数,且周期为
,因此研究系统频率特性只要在
范围内就可以了。
(6–2)
容易证明,其实部是
的偶函数,虚部是
的奇函数,其模
的
的偶函数,相位
是
的奇函数。
因此研究系统幅度特性
、相位特性
,只要在
范围内讨论即可。
综上所述,系统频率特性
具有周期性和对称性,深入理解这一点是十分重要的。
当离散系统的系统结构一定,它的频率特性
将随参数选择的不同而不同,这表明了系统结构、参数、特性三者之间的关系,即同一结构,参数不同其特性也不同。
例如,下图所示离散系统,
其数学模型由线性常系数差分方程描述:
系统函数:
系统函数频率特性:
幅频特性:
相频特性:
容易分析出,当
时系统呈低通特性,当
时系统呈高通特性;当
时系统呈全通特性。
同时说明,在系统结构如图所示一定时,其频率特性随参数a的变化而变化。
三、实验内容
a)
。
b)
c)
a)%design1.m
b=[1,0,-1];%分子系数向量
a=[1,0,-0.81];%分母系数向量
printsys(b,a,'z')
[Hz,w]=freqz(b,a);
w=w./pi;
magh=abs(Hz);
zerosIndx=find(magh==0);
magh(zerosIndx)=1;
magh=20*log10(magh);%以分贝
magh(zerosIndx)=-inf;
angh=angle(Hz);
angh=unwrap(angh)*180/pi;%角度换算
figure
subplot(1,2,1)
plot(w,