1MATLAB实验指导书张龙河北工程大学信电学院通信工程系2012年12月2实验一熟悉MATLAB环境[实验目的]1.熟悉MATLAB主界面,学会常用的窗口的操作2.学会简单的矩阵输入3.熟悉MATLAB基本语句的使用、矩阵与向量的基本运算[实验原理]1.用户第一次使用MATLAB时,可通过demo命令,启动MATLAB的演试程序,领略MATLAB所提供的强大的运算与绘图功能。也可以键入help进行进一步了解。2.MATLAB是以矩阵作为基本编程单元的一种程序设计语言。它提供了各种矩阵的运算与操作,并有较强的绘图功能。在MATLAB中输入矩阵最方便的的方式是直接输入矩阵的元素,其方法为:1)用中括号[]把所有矩阵元素括起来;2)同一行的不同数据元素之间用空格或逗号间隔;3)用分号(;)指定一行结束;4)也可以分成几行进行输入,用回车符代替分号;5)矩阵元素可以是任何matlab表达式(系统将自动计算结果),可以是实数,也可以是复数,复数可用特殊函数i,j输入。3.MATLAB语言最基本的赋值语句结构为:变量=表达式。表达式由操作符或其它字符,函数和变量名组成,表达式的结果为一个矩阵,显示在屏幕上,同时输送到一个变量(ans为默认)中并存放于workspace工作空间中以备调用。[实验内容]1.(1)用空格或逗号输入矩阵A=[123;456;789]B=[9,8,7;6,5,4;3,2,1];C=[4,5,6;7,8,9;1,2,3];或A=[1,2,3;4,5,6;7,8,9](2)试用回车代替A中的分号,观察输出结果。要求:总结矩阵的输入2.用edit或选择File|new菜单中的M-file进入编辑器,输入:Base=[9,8,7;6,5,4;3,2,1];Base_info=Base+1保存为Base.m文件,并通过Debug中的run命令(或F5)运行之,观察有何3异常现象。要求:解释异常现象的原因。3.打开Workspace窗口,学习save及load命令的使用(1)用save命令将上述输入的A、B、C三个变量存入data或data.mat文件;(2)通过CurrentDirectory查找data;(2)然后使用clc及clear命令;(3)最后通过loaddata(或data.mat)命令(可通过向上的方向键找到上条save命令再修改成load命令的方法)将变量A、B、C调入Workspce;(4)执行命令A+B+C要求:(1)观察使用上述命令后Workspce的变化;(2)使用命令savedata_newAB-ascii(或ASCII),改变存储格式,重复上述过程(第2步查找data_new,第3步loaddata_new,第4步改为A+B),观察Workspce显示结果的不同;(3)查看data_new,在data_new中取出A的值。[实验报告要求]针对实验内容中的各项要求,做出总结,给出实验报告。4实验二MATLAB数值运算及绘图功能[实验目的]1.掌握MATLAB特殊函数创建矩阵及利用已有矩阵创建新矩阵的方法2.掌握矩阵的操作,矩阵之间的运算方法3.学会使用常用的几种矩阵函数进行简单的问题求解4.掌握plot基本绘图语句的使用[实验原理]一、利用MATLAB特殊函数创建矩阵x=a:b;x=linspace(a,b,n);zeros(m,n);ones(m,n);eye(m,n)等randint(m,n):m×n0,1等概率随机阵rand(m,n):m×n(0,1)间均匀分布随机阵randn(m,n):m×n均值为0,方差为1的标准正态分布随机阵二、矩阵的操作1.矩阵中元素的表示:一是用两个下标来表示矩阵元素A(i,j),二是采用矩阵元素的索引值来引用矩阵元素-A(index)称序号(索引)表示法。2.矩阵中元素的提取和修改(1)矩阵元素的提取矩阵A的第r行:A(r,:)矩阵A的第r列:A(:,r)取矩阵A的第i1~i2行、第j1~j2列,构成新矩阵:A(i1:i2,j1:j2)A的第i1~i2行,构成新矩阵:A(i1:i2,:)删除A的第j1~j2列,构成新矩阵:A(:,j1:j2)=[]将矩阵A和B拼接成新矩阵:[AB];[A;B](2)矩阵元素的修改可以利用下标对矩阵元素进行修改,可用find函数修改3.矩阵中元素的数学运算元素取整函数:•round(A)%四舍五入取整5•fix(A)%将矩阵A中元素按离0近的方向取整•floor(x)%向负无穷方向取整,即取不足整数•ceil(x)%向正无穷方向取整,即取过剩整数4.矩阵的一些特殊操作(旋转与变形)•矩阵的变维a=[1:12];b=reshape(a,3,4)c=zeros(3,4);c(:)=a(:)•矩阵的变向rot90:旋转;fliplr:左右翻;flipud:上下翻•矩阵的抽取diag(D)%取D矩阵的主对角元素X=diag(v)%以向量v为主对角线元素,其余元素为0构成矩阵Xa1=diag(A,1)%取A阵“第一上对角线”的元素A1=diag(a1,-1)%产生以a1数组元素为“第一下对角线”元素的二维数组•矩阵的扩展repmat(D,1,3)%在水平方向“铺放”三个D阵三、矩阵之间的运算1.矩阵乘法:A*B,只有当前一矩阵的列数和后一矩阵的行数相同或者其中一个为标量时才能进行。2.矩阵除法:运算符有两种“\”(左除)和“/”(右除),两矩阵相除,主要用于方程组求解。A*x=B的解为x=A\B;x*A=B的解为x=B/A。要解上述的联立方程式,可利用矩阵左除\做运算,即:X=A\B,左除时要求A、B的行数相等。四、常用的几个矩阵函数n=numel(A)%计算矩阵A中元素的个n=length(a)%计算向量中元素的个数32103251xyzxyzxyz321132111AxXyz1051B6[m,n]=size(A)%返回矩阵的行列数size(A,1)%返回矩阵的行数;size(A,2)%返回矩阵的列数max、min—各列最大、最小值,如:[Y,I]=max(A)%返回各列最大值Y及最大值在各列的位置mean各列平均值;sum各列求和;std各列标准差;var各列方差;sort各列递增排序[实验内容]1.写出下列命令的运算结果,然后验证:(1)A=[eye(2);5:5:11](3)a=[1–2–45];b=(a=-2&a=5)(4)a=linspace(-3,0,4);f=zeros(1,5);f(a+5)=a(5)x=[7658104];y=find(x4)(6)m=[7658104];m(find(m=7))=[]2.熟悉矩阵的基本运算(1)矩阵的基本数学运算键入矩阵a,ba=[12;03]b=[34+3i;8+i10]作如下运算,并记录结果。V1=a+bV2=sum(a)V3=sum(b)V4=a’V5=a.’V6=b’V7=b.’(比较V4和V5有什么不同,V6和V7有什么不同)V8=a*bV9=a.*b(比较V8和V9有什么不同)V10=a^2V11=a/b(矩阵右除,常规除)V12=a\b(矩阵左除,比较左除与右除的结果有什么不同)3.利用randn函数建立3×3的矩阵:(a)使用函数sum,分别求此矩阵第一列的和、第三行的和(b)使用函数max,找出此矩阵中,最大的元素4.按如下要求,绘制两条曲线,一条是余弦曲线cos220xtt,另一条是7按100Hz抽样频率对余弦曲线进行抽样得到的离散序列。设t的时长为0.1s。要求:(1)在同一窗口中使用holdon命令绘出上述两条曲线,并设置图形属性如下:连续曲线:黑色,实线抽样序列:红色,虚线,宽为3个象素图题为“连续余弦曲线及其抽样序列”,并加图例;(2)使用subplot命令绘出上述两条曲线;(3)交互式绘图方式将图题改为“余弦曲线”。5.MATLAB的绘图修饰(1)色彩、线型和数据点标志x=0:pi/50:2*pi;y=cos(x);plot(x,y,'-.mo')%用品红色、点划线和数据标记点符号“o”来绘图plot(x,y,'--g*')%用绿色、虚线和数据标记点符号“*”来绘图(2)坐标轴的控制x=0:0.02:5;y=x.^2;plot(x,y,'--g*')axis([-1,11,-2,30]);%比较用此命令前后图形的区别(3)坐标网格在(2)命令的基础上,加入命令:gridon可看到图形上的网格线。(4)图形的标注和图例x=linspace(0,pi,20);y=sin(x);z=cos(x);w=x-0.5;plot(x,y,'b:',x,z,'r-',x,w,'-.b*');%绘图xlabel('Xaxis');%x轴的标注ylabel('functiony,zandw');%y,z,w轴的标注title('ThreeFunction');%图形的标题gridontext(2,1,'y=sinx')%在点(6,-0.5)处标注text(2,-0.3,'z=cosx')gtext('w=x-0.5')legend('y=sinx','z=cosx','w=x-0.5')%制作图例说明盒[实验报告要求]81.写出每一实验的设计过程及实验结果2.总结实验,写出上机收获与体会9实验三MATLAB程序设计基础[实验目的]1.熟悉MATLAB的数据结构2.熟悉流程控制语句的使用,搞清MATLAB中循环体与C语言的不同3.掌握脚本与函数文件的编程方法4.进一步掌握绘图语句的使用[实验原理]一、MATLAB的数据类型在MATLAB中有六种常用基本数据类型:double(双精度数值)char(字符)sparse(稀疏数据):一般用于处理稀疏矩阵storage(存储型):只用于内存的有效存储cell(单元数组):struct(结构):一般只在大型程序中使用在MATLAB中,所有的数都用double浮点双精度类型来存储和运算。因而省略了定义类型的语句,编程时无需去思考分辨,也减少了错误。当然对于那些本来要用一两个字节来表示的变量来说,这种做法浪费内存,又降低了运算速度。但用牺牲(存储)空间和(运算)时间来换取人机交互友善性的战略被证明是有效的,它形成了科学计算语言的特色,使人们不在编程的细节上花精力,而把注意力集中到科学计算的方法和建模合理性等大问题上去。二、MATLAB的流程控制语句与C语言类似,MATLAB程序的控制结构也有顺序结构、选择结构和循环结构三种,另外还有一种试探结构。由于MATLAB以矩阵为运算单位,所以在for和while循环结构及分支结构的使用上与C略有不同,这是特别要注意的,希望通过本次实验加以理解。1.for循环的格式for循环可接受有效维数的数组作为循环变量forx=array10commands;endFor循环语句的执行过程:当循环变量为矩阵时,其执行过程是从矩阵的第一列开始,依次将矩阵的各列之值赋值给变量,然后执行语句组中的语句,直到最后一列。2.switch分支结构的格式switchswitth_expr分支条件(数值或字符串)case数值(或字符串)常量表达式1语句组1case{数值(或字符串)常量表达式case_expr2,数值(或字符串)常量表达式case_expr3…}语句组2case数值(或字符串)常量表达式N语句组notherwise语句组n+1end三、MATLAB的m文件m文件是由MATLAB语句构成的ASCII码文件,用户可以用普通的文本编辑把一系列MATLAB语句写进一个文件里,给定文件名,确定文件的扩展名为.m,并存储。m文件可分为两种:1.脚本文件(Scripts):也称命令文件,是由用户为解决特定的问题而编制的;2.函数文件(Function):子程序,可由用户编写,但它必须由其它m文件来调用[实验内容]1.按要求给出结果(1)若有s=input(‘Pleas