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

matlab实验报告

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

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

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

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

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

解:>> A=[1 2 3;4 5 6;7 8 9];>> B=[9 8 7;6 5 4;3 2 1];>> A*Bans =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 94、Fibonacci 数组的元素满足Fibonacci 规则:),2,1(,12=+=++k a a a k k k ;且121==a a 。

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

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

解>> a1=1;>> a2=1;>> b=0;>> while b<10000b=a1+a2;a1=a2;a2=b;end>> bb =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. 掌握连续信号的MA TLAB 表示方法(表达式及图形描述);2. 掌握离散序列的MATLAB 表示方法(表达式及图形描述);二、实验原理在MA TLAB 中通常用两种方法来表示信号,一种是向量表示信号,另一种则是用符号运算的方法来表示信号。

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

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

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

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

3.常用连续信号的表示1)单位阶跃信号单位阶跃信号的定义为:⎩⎨⎧<>=0001)(t t t ε 一种得到单位阶跃信号的方法是在MA TLAB 的Symbolic Math Toolbox 中调用单位阶跃函数Heaviside ,这样可方便地表示出单位阶跃信号。

但是,在用函数 ezplot 实现其可视化时,就出现一个问题:函数ezplot 只能画出既存在于Symbolic Math 工具箱中,又存在于总MATLAB 工具箱中的函数,而Heaviside 函数仅存在Symbolic Math Toolbox 中,因此,就需要在自己的工作目录work 下创建Heaviside 的M 文件,该文件如下:function f=Heaviside(t)f=(t>0); %t>0时f 为1,否则为0正确定义出该函数并保存运行后,就可调用该函数了。

(二.) 离散时间信号的表示及可视化1.一般离散信号的表示:一般说来,离散时间信号用f(k)表示,其中变量k 为整数,代表离散的采样时间点。

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

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

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

2.典型离散序列的表示1)单位序列δ(k)单位序列的定义为⎩⎨⎧≠==0001)(k k k δ function dwxulie(k1,k2,k0)k=k1:k2;n=length(k)f=zeros(1,n)f(1,-k0-k1+1)=1 %在k0时刻,信号赋值为1stem(k,f,'filled')axis([k1,k2,0,1.5])title('单位序列δ(k)')2)单位阶跃序列单位阶跃序列⎩⎨⎧<≥=0001)(k k k ε与单位序列类似,下面给出绘制单位阶跃序列ε(k+k 0)的MATLAB 子程序: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('单位阶跃序列')三.上机练习1.认真预习实验原理的内容,将所有例题在计算机上练习一遍。

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

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

头文件:function f=Heaviside(t)f=(t>0);调用:>> y=sym('exp(-1.5*t)*Heaviside(t)');ezplot(y)>> text(3.1,exp(-1.5*3.1)*Heaviside(3.1),'\leftarrowexp(-1.5*t)*Heaviside(t)=0.05')>> axis([0 5 -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、掌握信号时域运算的MA TLAB实现方法。

相关主题