MATLAB基础及应用实验指导书MATLAB基础及应用课程实验指导书实验一软件环境和基本操作熟悉一、实验目的①熟悉MATLAB 主界面,并学会简单的菜单操作。
②学会简单的矩阵输入与信号输入。
③掌握部分绘图函数。
二、实验内容熟悉MATLAB操作环境,通过简单操作熟悉MATLAB的基本使用方法。
三、实验要求与步骤1、用户第一次使用MATLAB 时,建议首先在屏幕上键入demo 命令,它将启动MATLAB 的演试程序,用户可在此演示程序中领略MATLAB 所提供的强大的运算与绘图功能。
也可以键入help 进行进一步了解。
MATLAB 启动界面如图所示:MATLAB 语言最基本的赋值语句结构为:变量名列表= 表达式。
表达式由操作符或其它字符,函数和变量名组成,表达式的结果为一个矩阵,显示在屏幕上,同时输送到一个变量中并存放于工作空间中以备调用。
如果变量名和“= ”省略,则ans 变量将自动建立,例如键入:1900/81 ,得到输出结果:ans =23.4568 。
MATLAB 中变量命名的原则要求必须以英文字母开头,文件夹名字中可以还包括、下划线和数字,不要使用其他的字符,更不要单纯使用数字或者中文名命名,有时在运行MATLAB 中一些莫名的错误可能就是不规范的命名引起的。
这种规则包括将来为自己编写的脚本文件、函数文件命名以及为使用的变量命名也应遵循这个规则。
2、用户工作目录和当前目录的建立和设置1)为管理方便,每个用户在使用MATLAB 前,尽量为自己建立一个专门的工作目录,即“用户目录”,用来存放自己创建应用文件。
例如首先打开资源管理器,在E 驱动器下可以根据自己喜好建立一个新文件夹,但应注意:该文件夹必须以英文开头,文件夹名字中可以包括字母、下划线和数字,不要使用其他的字符,更不要单纯使用数字或者中文名命名,有时在运行MATLAB 中一些莫名的错误可能就是不规范的命名引起的,这与MATLAB 中为变量和文件名命名原则是一致的。
尽管MATLAB\work 允许用户存放用户文件,但最好把它仅作为临时工作目录来使用。
2)为了用户运行方便,在开始工作前可把用户定义的目录设置为当前目录,方法是可直接在MATLAB 命令窗口桌面上方通过目录设置栏来实现。
3)把自己的工作目录加到MATLAB 搜索路径上,这样可以在任何情况下方便地调用自己的编写文件。
MATLAB 工作时,基本搜索过程为:首先在工作空间,即MATLAB 内存中进行检查,看输入的指令是不是变量;如不是,则检查输入指令是不是内建函数(比如sin 函数等);如不是,则在当前目录上,检查是否有与输入指令相同的M 文件存在;如还没有,则在MATLAB 定义的搜索路径其他目录中,检查是否有该M 文件存在。
设置方法是通过File 菜单下设置路径对话框进行。
3、熟悉简单的矩阵输入1)从屏幕上输入矩阵A=[1 2 3 ;4 5 6;7 8 9] 回车A=[1,2,3;4,5,6;7,8,9] 回车观察输出结果。
2)试用回车代替分号,观察输出结果。
3)输入size(A) ,观察结果。
4)输入矩阵B=[9,8,7;6,5,4;3,2,1];回车输入矩阵C=[4,5,6;7,8,9;1,2,3];回车,然后分别键入 A B C 回车观察结果。
5)选择File | new 菜单中的M-file ,输入B=[9,8,7;6,5,4;3,2,1] ;保存为B.M 文件,退出编辑环境。
此时在工作环境中使用 B 命令就可调出 B 矩阵。
6)再试着输入一些矩阵,矩阵中的元素可为任意数值表达式,但注意 : 矩阵中各行各列的元素个数需分别相等,否则会给出出错信息。
7)输入 who 和 whos 观察结果,了解其作用。
4、常用基本命令的使用数据文件的存取训练:利用 save 和 load 指令可以方便地把当前工作空间的数据变量保存为数据文件。
接题一,输入: save a 回车,表示把当前工作空间的所有变量保存为 a.mat 文件。
输入 save a A C 回车,表示把当前内存中的变量 A 、 C 保存为 a.mat 文件。
类似的还有 load 命令,实现保存数据变量的装载,执行 clear 命令,然后运行 load a 回车,观察工作空间的变化。
save 、 load 、 clear 命令还有一些其他的应用格式,具体可参看帮助文件。
5、基本序列运算1)数组的加减乘除和乘方运算2)输入 A=[1 2 3] ,B=[4 5 6],求C=A+B ,D=A-B ,E=A.*B , F=A./B ,G=A.^B, 并用 stem 画出A ,B ,C ,D ,E ,G 。
再输入一些数组,进行类似运算。
3)在命令窗口用 plot 指令粗略描绘下列各函数的波形(其中对于连续信号可取时间间隔为 0.001,可参看下面的a 的实例来实现,数学函数 MATLAB 实现参见附录)a. ()te tf --=3 30<<t实现方法,在命令窗口执行一下指令,可简单描绘出函数曲线: t=0:.001:3; y=3-exp(-t); plot(t,y)b. ()tt e e t f 235--+= 30<<t c. ()()t e t f tπ2sin -= 30<<td. ()()at at t f /sin = ππ22<<-t (π在 MATLAB 中用pi 来实现)f. ()ke tf = 50<≤k实验二矩阵的建立和基本运算一、实验目的①熟悉MATLAB命令行输入方法,并熟悉历史命令窗口现场菜单的使用。
②掌握矩阵的基本运算命令。
③掌握符号矩阵的基本运算命令二、实验内容1、通用的特殊矩阵常用的产生通用特殊矩阵的函数有:zeros:产生全0矩阵;ones:产生全1矩阵eye:产生单位矩阵;rand:产生0-1间均匀分布的随机矩阵;randn:产生均值为0,方差为1的标准正态分布的随机矩阵。
2、矩阵运算1)矩阵加减运算:假定有两个矩阵A和B,则可以由A+B和A-B实现矩阵的加减运算。
2)假定有两个矩阵A和B,若A为m×n矩阵,B为n×p矩阵,则C=A*B 为m×p矩阵。
3)如果A矩阵是非奇异方阵,A\B等效与A的逆左乘B矩阵,inv(A)*B,而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A).4)矩阵的乘方。
一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。
3、多项式运算poly ——产生特征多项式系数向量roots ——求多项式的根p=poly2str(c,‘x’)(以习惯方式显示多项式)conv,convs多项式乘运算deconv多项式除运算多项式微分polyder(p): 求p的微分polyder(a,b): 求多项式a,b乘积的微分[p,q]=polyder(a,b): 求多项式a,b商的微分。
5、代数方程组求解1)恰定方程组的解方程ax=b(a为非奇异)两种求解方法:x=inv(a) b —采用求逆运算解方程x=a\b —采用左除运算解方程。
2)超定方程组的解方程ax=b ,m<n时此时不存在唯一解。
x=(a' a)-1 a ' b —求逆法。
3)欠定方程组的解MATLAB可求出两个解:用除法求的解x是具有最多零元素的解是具有最小长度或范数的解,这个解是基于伪逆pinv求得的。
三、实验要求与步骤1、熟悉MATLAB的运行环境,生成一个3行3列的随机矩阵,并逆时针旋转90°,左右翻转,上下翻转。
>> a=magic(3)a =8 1 63 5 74 9 2>> b=rot90(a) 逆时针旋转90°b =6 7 21 5 98 3 4>> c=fliplr(b) 左右翻转c =2 7 69 5 14 3 8>> d=flipud(c) 上下翻转d =4 3 89 5 12 7 62、已知a=[1 2 3],b=[4 5 6],求a.\b和a./ ba.\bans =4.0000 2.5000 2.0000a./ bans =0.2500 0.4000 0.50003、已知a=[1 2 3;4 5 6;7 8 0],求其特征多项式并求其根。
求特征多项式:a =1 2 34 5 67 8 0AA=sym(a)AA =[ 1, 2, 3][ 4, 5, 6][ 7, 8, 0]>> poly(AA)ans =x^3-6*x^2-72*x-27b=poly(a)b =1.0000 -6.0000 -72.0000 -27.0000>> c=roots(b)c =12.1229-5.7345-0.38844、已知多项式a(x)=x2+2x+3,b(x)=4x2+5x+6,求a ,b 的积并微分。
a=[1,2,3];b=[4,5,6];polyder(a,b) ans =16 39 56 275、求解方程 1)⎩⎨⎧=+=+133x 2822121x x xa=[1 2;2 3];b=[8;13];x=a\b x = 2 32)⎪⎩⎪⎨⎧=+=+=+343 23x 212212121x x x x xa=[1 2;2 3;3 4];b=[1;2;3];x=a\bx =1.0000 -0.0000实验三MATLAB程序设计(1)一、实验目的①熟悉MATLAB程序编辑与设计环境。
②掌握各种编程语句语法规则及程序设计方法。
③函数文件的编写和设计。
④了解和熟悉跨空间变量传递和赋值。
二、实验内容1、程序流程控制语句for循环结构语法:for i=初值:增量:终值语句1……语句nend说明:1.i=初值:终值,则增量为1。
2.初值、增量、终值可正可负,可以是整数,也可以是小数,只须符合数学逻辑。
while 循环结构语法:while 逻辑表达式循环体语句end说明:(1)whiIe结构依据逻辑表达式的值判断是否执行循环体语勾。
若表达式的值为真,执行循环体语句一次、在反复执行时,每次都要进行判断。
若表达式的值为假,则程序执行end之后的语句。
(2)为了避免因逻辑上的失误,而陷入死循环,建议在循环体语句的适当位置加break语句、以便程序能正常执行。
(执行循环体的次数不确定;每一次执行循环体后,一定会改变while后面所跟关系式的值。
)(3)while循环也可以嵌套、其结构如下:while逻辑表达式1循环体语句1while逻辑表达式2循环体语句2end循环体语句3endif-else-end分支结构if 表达式 1语句1else if 表达式2(可选)语句2else(可选)语句3endend说明:(1)if结构是一个条件分支语句,若满足表达式的条件,则往下执行;若不满足,则跳出if结构。