MATLAB实训实验.docx
《MATLAB实训实验.docx》由会员分享,可在线阅读,更多相关《MATLAB实训实验.docx(29页珍藏版)》请在冰豆网上搜索。
MATLAB实训实验
2015/2016学年下学期
《信号与系统》
实验报告
班级:
学号:
学生姓名:
指导教师:
2016年3月8日
实验一基本函数仿真
实验项目:
基本函数仿真
实验时间:
2016年3月8日星期二第34节课
实验地点:
1501实验室
实验目的:
1、学习使用MATLAB软件
2、学习MATLAB中各种函数,并应用函数分析
3、对MATALB的进一步的学习了解,熟练掌握MATALB的各种操纵,学会使用MATALB解决复杂的运算并学会用MATALB解决平时学习中的实际问题。
4、了解MATALB的数值运算
5、了解MATALB的基本函数和命令
6、学习掌握MATALB有关命令
实验内容:
1、
(1)题目:
应用MATLAB方法实现单位阶跃信号和矩形脉冲。
(2)程序清单(源程序)
解:
对于阶跃函数,MATLAB中有专门的stairs绘图命令。
例如,实现
和矩形脉冲的程序如下:
t=-1:
2;%定义时间范围向量t
x=(t>=0);
subplot(1,2,1),stairs(t,x);axis([-1,2,-0.1,1.2]);gridon%绘制单位阶跃信号波形
t=-1:
0.001:
1;%定义时间范围向量t
g=(t>=(-1/2))-(t>=(1/2));
subplot(1,2,2),stairs(t,g);axis([-1,1,-0.1,1.2]);gridon%绘制矩形脉冲波形
(3)运行结果(截图)
图1例1图
(4)函数解析
Subplot:
使用方法:
subplot(m,n,p)或者subplot(mnp)。
是将多个图画到一个平面上的工具。
其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,如果m=2就是表示2行图。
p表示图所在的位置,p=1表示从左到右从上到下的第一个位置。
Stairs:
stairs函数用于绘制阶梯状图
axis函数通常在绘图中用于设置坐标值范围
2、
(1)题目
例2应用MATLAB方法生成信号
和
的波形。
(2)程序清单
解:
为生成函数
可直接调用MATLAB中的专门命令,程序如下:
t=-5:
0.01:
5;%定义时间范围向量t
f=sinc(t);%计算Sa(t)函数
plot(t,f);gridon%绘制Sa(t)的波形
(3)运行结果
图2例2程序运行结果一
和
的关系如下:
生成信号
波形的MATLAB程序如下:
t=-3*pi:
0.01*pi:
3*pi;%定义时间范围向量t
f=sinc(t/pi);%计算Sa(t)函数
plot(t,f);gridon%绘制Sa(t)的波形
(3)运行结果
图3例2程序运行结果二
(4)函数解析
Plot:
函数命令plot是MATLAB二维曲线绘图中最简单、最重要、使用最广泛的一个线性绘图函数。
它可以生成线段、曲线和参数方程曲线的函数图形。
gridon是matlab中的一种函数,表示在画图的时候添加网格线
3、
(1)题目
应用MATLAB方法生成相加信号
和相乘信号
的波形。
(课本上没有)
(2)程序清单
解:
对相加信号
,程序如下:
symst;%定义符号变量t
f=cos(18*pi*t)+cos(20*pi*t);%计算符号函数f(t)=cos(18*pi*t)+cos(20*pi*t)
ezplot(f,[0pi]);gridon%绘制f(t)的波形
(3)运行结果
图4例3程序运行结果一
对相乘信号
,程序如下:
t=-5:
0.01:
5;%定义时间范围向量
f=sinc(t).*cos(20*pi*t);%计算函数f(t)=sinc(t)*cos(20*pi*t)
plot(t,f);%绘制f(t)的波形
title('sinc(t)*cos(20*pi*t)');gridon%加注波形标题
运行结果如图5所示。
图5例3程序运行结果二
(4)函数解析
syms函数用于创建符号对象
ezplot即:
Easytousefunctionplotter。
它是一个易用的一元函数绘图函数。
特别是在绘制含有符号变量的函数的图像时,ezplot要比plot更方便。
因为plot绘制图形时要指定自变量的范围,而ezplot无需数据准备,直接绘出图形。
4、
(1)题目
应用MATLAB方法生成调制信号
的波形。
(2)程序清单
解:
对调制信号
,程序如下:
symst;%定义符号变量t
f=(2+2*sin(4*pi*t))*cos(50*pi*t);%计算符号函数f(t)=(2+2*sin(4*pi*t))*cos(50*pi*t)
ezplot(f,[0pi]);gridon%绘制f(t)的波形
(3)运行结果如图6所示。
图6例4图
(4)函数解析
gridon是matlab中的一种函数,表示在画图的时候添加网格线
实验二连续系统时域响应仿真
实验项目:
连续系统时域响应仿真
实验时间:
2016年3月22日星期二第34节课
实验地点:
1501实验室
实验目的:
1、对MATALB的进一步的学习了解,熟练掌握MATALB的各种操纵,学会使用MATALB解决复杂的运算并学会用MATALB解决平时学习中的实际问题。
2、了解MATALB的数值运算
3、了解MATALB的基本函数和命令
4、学习掌握MATALB有关命令
实验内容:
任务1
(1)题目
例5设方程
,试求零状态响应
。
(2)程序清单(源程序)
解:
程序如下:
yzs=dsolve('D2y+5*Dy+6*y=2*exp(-t)','y(0)=0,Dy(0)=0')%利用dslove命令求解零状态响应
ezplot(yzs,[08]);gridon%绘制零状态响应曲线
运行结果:
yzs=exp(-t)+exp(-3*t)-2*exp(-2*t)
即:
(3)运行结果(截图
图7例5图
(4)函数解析
solve(f,v):
求方程关于指定自变量的解,f可以是用字符串表示的方程、符号表达式或符号方程
dsolve:
微分方程
任务2
(1)题目
已知二阶系统方程
对下列情况分别求
,并画出其波形。
(课本上没有)
a.
b.
c.
d.
(2)程序清单
解:
程序如下:
R=input('电阻R=');%以交互方式输入电阻R的值
L=input('电感L=');%以交互方式输入电阻L的值
C=input('电容C=');%以交互方式输入电阻C的值
b=[1/(L*C)];
a=[1R/L1/(L*C)];
impulse(b,a);%绘制脉冲响应h(t)的波形
(3)运行结果(截图)
a.电阻R=4电感L=1电容C=1/3
图8例6程序运行结果一
b.电阻R=2电感L=1电容C=1
图9例6程序运行结果二
c.电阻R=1电感L=1电容C=1
图10例6程序运行结果三
d.电阻R=0电感L=1电容C=1
图11例6程序运行结果四
(4)函数解析(例如题1-2中,解释sinc()函数的作用)
7、
(1)题目实现卷积
,其中:
。
(课本上没有)
(2)程序清单
解:
主程序如下:
p=0.01;%取样时间间隔
nf=0:
p:
1;%f(t)对应的时间向量
f=2*((nf>=0)-(nf>=1));%序列f(n)的值
nh=0:
p:
2;%h(t)对应的时间向量
h=(nh>=0)-(nh>=2);%序列h(n)的值
[y,k]=sconv(f,h,nf,nh,p);%计算y(t)=f(t)*h(t)
subplot(3,1,1),stairs(nf,f);gridon%绘制f(t)的波形
title('f(t)');axis([0302.1]);
subplot(3,1,2),stairs(nh,h);gridon%绘制h(t)的波形
title('h(t)');axis([0302.1]);
subplot(3,1,3),plot(k,y);gridon%绘制y(t)=f(t)*h(t)的波形
title('y(t)=f(t)*h(t)');axis([0302.1]);
子程序sconv如下:
%此函数用于计算连续信号的卷积y(t)=f(t)*h(t)
function[y,k]=sconv(f,h,nf,nh,p)
%y:
卷积积分y(t)对应的非零样值向量
%k:
y(t)对应的时间向量
%f:
f(t)对应的非零样值向量
%nf:
f(t)对应的时间向量
%h:
h(t)对应的非零样值向量
%nh:
h(t)对应的时间向量
%p:
取样时间间隔
y=conv(f,h);%计算序列f(n)与h(n)的卷积和y(n)
y=y*p;%y(n)变成y(t)
left=nf
(1)+nh
(1);%计算序列y(n)非零样值的起点位置
right=length(nf)+length(nh)-2;%计算序列y(n)非零样值的终点位置
k=p*(left:
right);%确定卷积和y(n)非零样值的时间向量
(3)运行结果
图12例7图
(4)函数解析
Function函数调用
8、
(1)题目实现卷积
,其中:
。
(课本58)
(2)程序清单
解:
主程序如下:
p=0.01;%取样时间间隔
nf=0:
p:
2;%f(t)对应的时间向量
f=2*((nf>=0)-(nf>=2));%序列f(n)的值
nh=0:
p:
4;%h(t)对应的时间向量
h=exp(-nh);%序列h(n)的值
[y,k]=sconv(f,h,nf,nh,p);%计算y(t)=f(t)*h(t)
subplot(3,1,1),stairs(nf,f);gridon%绘制f(t)的波形
title('f(t)');axis([0602.1]);
subplot(3,1,2),plot(nh,h);gridon%绘制h(t)的波形
title('h(t)');axis([0602.1]);
subplot(3,1,3),plot(k,y);gridon%绘制y(t)=f(t)*h(t)的波形
title('y(t)=f(t)*h(t)');axis([0602.1]);
子程序sconv同例7。
(3)运行结果如图13所示。
图13例8图
(4)函数清单
axis([xminxmaxyminymax])用来标注输出的图线的最大值最小值
exp函数是一个数论函数,可以用来表示一定的算术基本定理。
exp函数(exp-function)一种数论函数.依算术基本定理,任何一个自然数n都可惟一地分解成一些质数方幂的乘积形式,在第a个质数p“上的方幂数记为exp}Cn).例如expl<9)=2,exp3<9)=0等.函数.lxexpa(x)称为一元exp函数,而.}xyexp}妇则称为二元exp函数.利用exp函数,算术基本定理可以表述成
实验三连续信号的频谱仿真
实验项目:
连续信号的频谱仿真
实验时间:
2016年4月7日星期四第12节课
实验地点:
1501实验室
实验目的:
1、对MATALB的进一步的学习了解,熟练掌握MATALB的各种操纵,学会使用MATALB解决复杂的运算并学会用MATALB解决平时学习中的实际问题。
2、了解MATALB的数值运算
3、了解MATALB的基本函数和命令
4、学习掌握MATALB有关命令
实验内容:
9、
(1)题目
求图14(a)所示周期矩形脉冲信号的傅里叶级数表示式,并用MATLAB方法求出N=7和N=21时的合成图。
(2)程序清单
解:
该信号的系数:
前N项的合成表达式为:
为奇数
利用MATLAB工具分析的程序如下:
t=-3:
0.001:
3;%定义时间范围向量t
N=input('N=');%以交互方式输入N的值
F0=0.5;
fN=F0*ones(1,length(t));
forn=1:
2:
N
fN=fN+cos(pi*n*t)*sinc(n/2);
end
plot(t,fN);%绘制fN的波形
title(['N='num2str(N)]);
axis([-33-0.21.2]);gridon
(3)运行结果如图14(b)和图14(c)所示。
(a)
(a)
(b)(c)
图14周期矩形脉冲的合成
(4)函数解析
Input:
输入函数
10、
(1)题目
如图15所示周期矩形脉冲
,试绘出其频谱图。
(课本94页)
图15例10图
(2)程序清单
解:
程序如下:
clearall
symstnTtaoA
T=4;A=1;tao=1;
f=A*exp(-j*n*2*pi/T*t);
fn=int(f,t,-tao/2,tao/2)/T;%计算傅里叶系数
fn=simple(fn);%化简
n=[-20:
-1,eps,1:
20];%给定频谱的整数自变量,eps代表0
fn=subs(fn,n,'n');%计算傅里叶系数对应各个n的值
subplot(2,1,1),stem(n,fn,'filled');%绘制频谱
line([-2020],[00]);%在图形中添加坐标线
title('周期矩形脉冲的频谱');gridon
subplot(2,1,2),stem(n,abs(fn),'filled');%绘制频谱
title('周期矩形脉冲的幅度谱');gridon
axis([-202000.3]);
(3)运行结果如图15所示。
图15例10频谱图
(4)函数解析
Int:
表示赋值
Simple:
表示化简
11、
(1)题目如图16(a)所示三角波信号,即:
,试求其频谱
。
(课本95页)
(a)(b)
图16例11图
(2)程序清单
解:
程序如下:
symstwfft;%定义符号变量
f=(1-(abs(t)/2));%三角波信号
ft=f*exp(-j*w*t);%计算被积函数
F=int(ft,t,-2,2);%计算傅里叶变换F(w)
F=simple(F);F%化简
axis([-3301.1]);title('三角波信号');
ezplot(abs(F),[-8:
0.01:
8]);gridon%绘制三角波信号的频谱
title('三角波信号的频谱');
(3)运行结果:
F=-(cos(2*w)-1)/w^2
即:
频谱如图16(b)所示。
12、
(1)题目二阶低通滤波器特性为
即:
和
令
和1时,分别求幅频特性和相频特性。
(2)程序清单
解:
程序如下:
Q=input('输入Q=');%以交互方式输入Q
normalizedw=linspace(0.1,10,100);
H=1./(1-normalizedw.^2+j*normalizedw/Q);%二阶低通滤波器的频率特性表达式
subplot(1,2,1),plot(normalizedw,abs(H));%绘制幅频特性曲线
title('幅频特性曲线');grid
subplot(1,2,2),plot(normalizedw,angle(H));%绘制相频特性曲线
title('相频特性曲线');grid
(3)运行结果如图17和图18所示。
输入Q=1/sqrt
(2)
图17例12程序运行结果一
输入Q=1
图18例12程序运行结果二
(4)函数解析
13、
(1)题目三阶低通滤波器特性为
试求:
a.该系统的幅频特性
和相频特性
,b.该系统的冲激响应
。
(2)程序清单
解:
求幅频特性
和相频特性
的程序如下:
w=0:
0.01:
5;
H=1./((j*w).^3+3*(j*w).^2+2*j*w+1);%三阶低通滤波器的频率特性表达式
subplot(1,2,1),plot(w,abs(H));%绘制幅频特性曲线
title('幅频特性曲线');grid;axistight;
subplot(1,2,2),plot(w,angle(H));%绘制相频特性曲线
title('相频特性曲线');grid;axistight;
(3)运行结果如图19所示。
图19例13程序运行结果一
求该系统的冲激响应
的程序如下:
b=[1];%分子多项式系数
a=[1321];%分母多项式系数
impulse(b,a);%冲激响应h(t)
运行结果如图20所示。
图20例13程序运行结果二
(4)函数解析
14、
(1)题目应用MATLAB方法生成信号
,其中
的波形如图21所示。
(课本119)
图21例14图
(2)程序清单
解:
程序如下:
t=-3*pi:
0.01:
3*pi;%定义时间范围向量
s=sinc(t/pi);%计算Sa(t)函数
subplot(3,1,1),plot(t,s);gridon%绘制Sa(t)的波形
p=zeros(1,length(t));%预定义p(t)的初始值为0
fori=16:
-1:
-16
p=p+rectpuls(t+0.6*i,0.4);%利用矩形脉冲函数rectpuls的平移来产生宽度为0.4,幅度为1的矩形脉冲序列p(t)
end
subplot(3,1,2),stairs(t,p);%用阶梯图形表示矩形脉冲
axis([-101001.2]);gridon
f=s.*p;
subplot(3,1,3),plot(t,f);gridon%绘制f(t)=Sa(t)*p(t)的波形
(3)运行结果如图22所示。
图22例14程序运行结果
(4)函数解析
15、
(1)题目分析如图23所示三角波信号
的取样过程,并画出
和
的频谱图。
(课本120)
(a)
(b)(c)
图23例15图
(2)程序清单
解:
程序如下:
symstwf;%定义符号变量
f=(1-2*abs(t))*exp(-j*w*t);%计算被积函数
F=int(f,t,-1/2,1/2);%计算傅里叶系数F(w)
F=simple(F);F%化简
subplot(3,1,1),%绘制三角波的幅频特性曲线F(w)
low=-26*pi;high=-low;%设置w的上界和下界
ezplot(abs(F),[low:
0.01:
high]);gridon
axis([lowhigh-0.10.5]);xlabel('\omega');
title('三角波的频谱');
subplot(3,1,2),%绘制经过截止频率为4*pi低通滤波器后的频谱Y1(w)
ezplot(abs(F),[-4*pi:
0.01:
4*pi]);gridon
axis([lowhigh-0.10.5]);xlabel('\omega');
title('低通滤波后的频谱');
%取样信号的频谱是原信号频谱的周期延拓,延拓周期为(2*pi)/Ts
%利用频移特性F[f(t)*exp(-j*w0*t)]=F(w+w0)来实现
subplot(3,1,3);%绘制取样后的频谱Y(w)
Ts=0.2;%取样信号的周期
w0=(2*pi)/Ts;%延拓周期10*pi
fork=-2:
2
ft=f*exp(-j*w0*k*t);
FT=int(ft,t,-1/2,1/2);
ezplot((1/Ts)*abs(FT),[(-4*pi-k*w0):
0.01:
(4*pi-k*w0)]);
holdon
end
axis([lowhigh-0.12.5]);xlabel('\omega');gridon
title('取样后的频谱');
(3)运行结果如图24所示。
图24例15各频谱图
(4)函数解析
axis函数通常在绘图中用于设置坐标值范围
gridon是matlab中的一种函数,表示在画图的时候添加网格线
实验总结:
上机学习MATALB有半个学期的时间,说实话我现在对MATLAB还是摸不着头脑,一方面是自己接触的时间太短,另一方面,就是自己在上机方面投入的时间有限,实践比较少。
现在,我对MATLAB的印象仅仅在绘制一些简单的数学函数图形上,但是我很喜欢MATLAB的简单的语法,易于绘制图形,编程也非常容易,并且具有功能强大的开放式的toolbox。
因此,尽管我一直没有这方面的应用,但是我还是对它非常感兴趣,自己正打算暑假好好研究研究MATLAB。
下面是我学习MATLAB在理论和实践方面的一点心得与体会,可能有些地方自己理解的不是很正确,但是随着学习的深入,我想我可以发现自己的错误所在。
首先我想说的是,在理论方面,在学习MATLAB过程中,我感觉到它和c语言有许多相似之处,他有c语言的特征,但是比c语言编程计算更加简单,适合于复杂的数学运算。
但是MATLAB跟其他语言也有着很大的不同。
众所周知MATLAB是一个基于矩阵运算的软件,但是,真正在运用的时候,特别是在编程的时候,许多人往往没有注意到这个问题。
在使用MATLAB时,受到了其他编程习惯的影响,特别是经常使用的C语言。
因此,在MATLAB编程时,for循环(包括while循环)到处都是。
.这不仅是没有发挥MATLAB所长,还浪费了宝贵的时间。
我这里想说的一点是,往往在初始化矩阵的时候注意到这个问题,懂得了使用矩阵而不是循环来赋值,但是,在其他环节上,就很容易疏忽,或者说,仍然没有摆脱C++、C的思想。
MATLAB博大精深,涉及的内容很多,所以,我认为不要试图掌握MATLAB的每一个功能,熟悉和你专业最相关的部分就可以了,这也是老师在课堂上经常说的。
学MATLAB并不难,难的是学会怎么用,所以经常上机实践是很必要的。
我自己感觉学习MATLAB和以前的编程能力没有太多的关系,所以不要担心自己编程能力差,自己一定用不好MATLAB,只要自己肯在这上面花费时间和精力,就一定能有所收获。
在学习MATLAB的过程中,不要只问不学,并且学MATLAB要有耐心,要大胆的去试,哪怕只有一丁点儿可能,只有自己动手去实践了才能发现错误的所在,利用这个解决