当前位置:文档之家› MATLAB实验报告

MATLAB实验报告

MATLAB程序设计语言实验报告专业及班级:电子信息工程**:**学号:**********日期 2013年6月20日实验一 MATLAB 的基本使用【一】 实验目的1.了解MATALB 程序设计语言的基本特点,熟悉MATLAB 软件的运行环境;2.掌握变量、函数等有关概念,掌握M 文件的创建、保存、打开的方法,初步具备将一般数学问题转化为对应计算机模型处理的能力;3.掌握二维图形绘制的方法,并能用这些方法实现计算结果的可视化。

【二】 MATLAB 的基础知识通过本课程的学习,应基本掌握以下的基础知识: 一. MATLAB 简介 二. MATLAB 的启动和退出 三. MATLAB 使用界面简介 四. 帮助信息的获取五. MATLAB 的数值计算功能六. 程序流程控制 七. M 文件八. 函数文件九. MATLAB 的可视化 【三】上机练习1. 仔细预习第二部分内容,关于MATLAB 的基础知识。

2. 熟悉MATLAB 环境,将第二部分所有的例子在计算机上练习一遍3.已知矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=123456789,987654321B A 。

求A*B ,A .* B ,比较二者结果是否相同。

并利用MATLAB 的内部函数求矩阵A 的大小、元素和、长度以及最大值。

程序代码:>> A=[1 2 3;4 5 6;7 8 9]; >> B=[9 8 7;6 5 4;3 2 1]; >> A*B ans =30 24 1884 69 54138 114 90>> A.*Bans =9 16 2124 25 2421 16 9 两者结果不同>> [m,n]=size(A)m =3n =3>> b=sum(A)b =12 15 18>> a=length(A)a =3>>max(A)ans =7 8 9 运行结果:4. Fibonacci 数组的元素满足Fibonacci 规则:),2,1(,12=+=++k a a a k k k ;且121==a a 。

现要求该数组中第一个大于10000的元素。

1) 在命令窗口中完成; 2) 利用M 文件完成;3) 自己定义一个函数文件,并在命令窗口中调用该函数完成。

程序代码:解:(1)>> a1=1;>> a2=1; >> b=0;>> while b<10000 b=a1+a2; a1=a2; a2=b; end >> b b =10946(2)function Fibonacci (x,y,z)a1=x; a2=y; b=0;while b<z b=a1+a2; a1=a2; a2=b; end将此函数定义为M 文件。

>> Fibonacci (1,1,1000)>> b =109465. 在同一个图形窗口的两个子窗口中分别画出)4cos(x π(红色、虚线)和)8cos(x π(蓝色、星号)的波形。

要求有标题,x 、y 轴有标注。

程序代码:>> x=-10:0.1:10;y1=cos((pi/4)*x);subplot(2,2,1),plot(x,y1,'r:') xlabel('x1')ylabel('y1=cos((pi/4)*x)') title('余弦函数') >> x=-10:0.1:10; y2=cos((pi/8)*x);subplot(2,2,2),plot(x,y1,'b-.p') xlabel('x2')ylabel('y2=cos((pi/8)*x)') title('余弦函数')运行结果:【四】思考题1.在语句末加分号“;”和不加分号有什么区别?2.M文件和函数文件有什么异同之处?3.矩阵乘(*)和数组乘(.*)有何不同?实验二信号的表示及可视化【一】实验目的1.掌握连续信号的MATLAB表示方法(表达式及图形描述);2.掌握离散序列的MATLAB表示方法(表达式及图形描述);【二】实验原理在MATLAB中通常用两种方法来表示信号,一种是向量表示信号,另一种则是用符号运算的方法来表示信号。

用适当的MATLAB语句表示出信号后,我们就可以利用MATLAB 的绘图命令绘出直观的信号波形。

一. 连续时间信号的表示及可视化从严格意义上来讲,MATLAB并不能处理连续信号,在MATLAB中,是用连续信号在等时间间隔点的样值来近似地表示连续信号的,当取样时间间隔足够小时,这些离散的样值就能较好的近似出连续信号。

1. 向量表示法对于连续时间信号f(t),我们可以用两个行向量f 和t 来表示,其中t 向量是形如t=t 1:p:t 2的MATLAB 命令定义的时间范围向量,t 1为信号起始时间,t 2为终止时间,p 为时间间隔。

向量f 为连续信号f(t)在向量t 所定义的时间点上的样值。

2. 符号运算表示法如果信号可以用一个符号表达式来表示它,则我们可用ezplot 命令绘制出信号的波形。

3.常用连续信号的表示 1)单位阶跃信号单位阶跃信号的定义为:⎩⎨⎧<>=0001)(t t t ε单位阶跃信号是信号分析的基本信号之一,在信号与系统分析中有着十分重要的作用,常用于简化信号的时域表示。

根据单位阶跃信号的特性,我们可以用它来表示时限信号和单边信号(因果信号)。

2)单位冲激信号单位冲激信号的定义为⎩⎨⎧≠==⎰∞∞-0,0)(1)(t t dt t δδδ(t)的定义表明,该信号除原点以外,处处为零,且信号面积为一。

即设有矩形脉冲)(t p n ,则由δ(t)的定义可得)(lim )(0t p t n n →=δ 二. 离散时间信号的表示及可视化1.一般离散信号的表示一般说来,离散时间信号用f(k)表示,其中变量k 为整数,代表离散的采样时间点。

在MATLAB 中,用一个向量f 即可表示一个有限长度的序列。

但是,这样的向量并没有包含其对应的时间序号信息。

所以,要完整地表示离散信号需要用两个向量。

2.典型离散序列的表示下面通过一些典型的离散信号来说明如何用MATLAB 实现离散序列的表示和可视化。

1)单位序列δ(k) 单位序列的定义为⎩⎨⎧≠==0001)(k k k δ由单位序列定义知,只有在k=0时,δ(k)的值为1,而其它时刻为0,因此,用MATLAB 来表示单位序列及绘制其波形非常简单。

2)单位阶跃序列 单位阶跃序列⎩⎨⎧<≥=0001)(k k k ε3)正弦序列正弦序列的表达式为:)cos()(ϕω+=k A k f式中k 为无量纲的整数,ω和ϕ以弧度为单位,ω称为正弦序列的数字角频率,ϕ为初相位。

需要注意的是:并非所有的正弦序列都是周期的。

这是因为离散时间信号的自变量和周期序列的周期都必须是整数,在正弦序列中并非对任意ω都能找到正整数的周期N.现在我们就来讨论正弦序列为周期序列的条件。

【三】上机练习1.认真预习实验原理的内容,将所有例题在计算机上练习一遍。

2. 用MATLAB 命令绘制单边指数信号e-1.5 tε(t)在时间0<t<3区间的波形。

要求有标题,在(3.1,0.05)处标注’t ’,利用axis 调整坐标轴在一个合适的范围,便于观察波形。

程序代码:>> t=0:0.01:3;>> y=exp(-1.5*t)*; >> plot(t,y)>> text(3.1,0.05,'t') >> title('函数')>>axis([-0.1 3.5 0 1.1])运行结果:3. 绘制δ(t-2),-1<t<5的波形。

程序代码:function chongji(t1,t2,t0)dt=0.01;t=t1:dt:t2;n=length(t);x=zeros(1,n);x(1,(-t0-t1)/dt+1)=1/dt;stairs(t,x);axis([t1,t2,0,1.2/dt])title('单位冲激信号')调用:chongji(-1,5,-2)运行结果:4. 绘制ε(k-3),-1≤k≤5及ε(k+1),-5≤k≤2。

程序代码:function jyxulie(k1,k2,k0)k=k1:-k0-1;kk=-k0:k2;n=length(k);nn=length(kk);u=zeros(1,n); %k0前信号赋值为零uu=ones(1,nn); %k0后信号赋值为一stem(kk,uu,'filled')hold onstem(k,u,'filled') hold offaxis([k1,k2,0,1.5]) title('单位阶跃序列') 调用jyxulie(-1,5,-3)运行结果:jyxulie(-5,2,1)5.考虑下面3个信号:f1(n)=cos(2πn/N)+2cos(3πn/N)f2(n)=2cos(2n/N)+2cos(3n/N)f3(n)=cos(2πn/N)+3cos(5πn/N)假设对每个信号N=6。

试确定上述信号是否是周期的。

如果是,则确定信号的周期,并画图表示出该信号的两个周期;如果不是周期的,在[0,4N]的范围内画出该信号,并说明原因。

答:f1(n)=cos(2πn/N)+2cos(3πn/N)是周期的。

周期为12 代码程序代码:>> n=0:24;>> subplot(2,2,1)>> stem(n,cos(n*2*pi/6)+2*cos(n*3*pi/6),'filled')运行结果:f2(n)=2cos(2n/N)+2cos(3n/N)非周期序列f3(n)=cos(2πn/N)+3cos(5πn/N)周期序列周期为60代码>> n=0:24;>> subplot(2,1,1)>> stem(n,2*cos(n*2/6)+2*cos(n*3/6),'filled')>> title('2*cos(n*2/6)+2*cos(n*3/6)')>> n=0:120;>> subplot(2,1,2)>> stem(n,cos(n*2*pi/6)+3*cos(pi*n*5/6),'filled')>> title('cos(n*2*pi/6)+3*cos(pi*n*5/6)')【四】思考题1. 观察例2-1的执行结果,当把时间间隔p取得更小(例如为0.02)时,观察执行结果,比较两结果用何不同,为什么?2.例2-3中的hold on和hole off命令的作用是什么?实验三信号的时域运算、时域变换及MATLAB实现【一】实验目的1.掌握信号时域运算的MATLAB实现方法2.掌握信号时域变换的MATLAB实现方法【二】实验原理信号的时域运算包括信号的相加、相乘,信号的时域变换包括信号的平移、反折、倒相及信号的尺度变换。

相关主题