Matlab实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

中南大学Matlab实验报告目录实验一熟悉MATLAB环境…………………………………………3实验二数值数组创建、应用及可视化………………………………9实验三字符串数组的使用、简单脚本文件和函数的编写…………15实验四数据可视化方法……………………………………………22实验感想及心得会……………………………………………………..27实验一熟悉MATLAB环境【实验目的】1、熟悉MATLAB主界面,并学会简单的菜单操作。2、学会简单的矩阵输入与信号输入。3、掌握部分绘图函数。【实验内容及实验结果】1.从屏幕上输入矩阵A=[123;456;789]回车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];回车,然后分别键入ABC回车观察结果。5.选择File|new菜单中的M-file,输入B=[9,8,7;6,5,4;3,2,1];保存为B.M文件,退出编辑环境。此时在工作环境中使用B命令就可调出B矩阵。6.再试着输入一些矩阵,矩阵中的元素可为任意数值表达式,但注意:矩阵中各行各列的元素个数需分别相等,否则会给出出错信息。7.输入who和whos观察结果,了解其作用。二.常用基本命令的使用数据文件的存取训练:利用save和load指令可以方便地把当前工作空间的数据变量保存为数据文件。接题一,输入:savea回车,表示把当前工作空间的所有变量保存为a.mat文件。输入saveaAC回车,表示把当前内存中的变量A、C保存为a.mat文件。类似的还有load命令,实现保存数据变量的装载,执行clear命令,然后运行loada回车,观察工作空间的变化。save、load、clear命令还有一些其他的应用格式,具体可参看帮助文件。三.基本序列运算1.数组的加减乘除和乘方运算2.输入A=[123],B=[456],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B,并用stem画出A,B,C,D,E,G。再输入一些数组,进行类似运算。stem(A)stem(B)stem(C)stem(D)stem(E)stem(F)3.在命令窗口用plot指令粗略描绘下列各函数的波形(其中对于连续信号可取时间间隔为0.001,可参看下面的a的实例来实现,数学函数MATLAB实现参见附录)a.tetf330t实现方法,在命令窗口执行一下指令,可简单描绘出函数曲线:t=0:.001:3;y=3-exp(-t);plot(t,y)b.tteetf23530tt=0:0.001:3;y=5*exp(-t)+3*exp(-2*t);plot(t,y)c.tetft2sin30tt=0:0.001:3;y=exp(-t).*sin(2*pi*t);plot(t,y)d.atattf/sin22t(在MATLAB中用pi来实现)t=0:0.001:3;a=2;y=sin(a*t)./(a*t);Warning:Dividebyzero.plot(t,y)f.ketf50kk=0:0.001:5;y=exp(k);plot(k,y)三.M脚本文件编写初步用M文件编辑器编写脚本文件重新描绘上面函数波形。实验二数值数组创建、应用及可视化[实验目的]1.掌握二维数组的创建、寻访,区分数组运算与矩阵运算的区别。2.掌握标准数组生成函数和数组构造技法。3.进一步熟悉M脚本文件编写的方法和技巧。[实验内容]一.数组的创建和寻访1.一维数组在命令窗口执行下面指令,观察输出结果,体味数组创建和寻访方法,%号后面的为注释,不用输入。rand('state',0)%把均匀分布伪随机发生器置为0状态x=rand(1,5)%产生(1*5)的均布随机数组x(3)%寻访数组x的第三个元素。x([125])%寻访数组x的第一、二、五个元素组成的子数组。x(1:3)%寻访前三个元素组成的子数组x(3:end)%寻访除前2个元素外的全部其他元素。End是最后一个元素的下标。x(3:-1:1)%由前三个元素倒排构成的子数组x(find(x0.5))%由大于0.5的元素构成的子数组x([12344321])%对元素可以重复寻访,使所得数组长度允许大于原数组。x(3)=0%把上例中的第三个元素重新赋值为0。x([14])=[11]%把当前x数组的第一、四个元素都赋值为1。x[3]=[]%空数组的赋值操作2.二维数组(1)在命令窗口执行下面指令,观察输出结果a=2.7358;b=33/79;%这两条指令分别给变量a,b赋值。C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i]%这指令用于创建二维组CM_r=[1,2,3;4,5,6],M_i=[11,12,13;14,15,16]%创建复数数组的另一种方法CN=M_r+i*M_i%由实部、虚部数组构成复数数组(2)利用M文件创建和保存下面的数组(分号后面是一个空格后加3个小数点,表示换行续写)AM=[101,102,103,104,105,106,107,108,109;...201,202,203,204,205,206,207,208,209;...301,302,303,304,305,306,307,308,309];(3)仿照问题1中方法找出数组5311342024A中所有绝对值大于3的元素。(4)在命令窗口执行下面指令,体味二维数组的子数组寻访和赋值A=zeros(2,4)%创建(2*4)的全零数组A(:)=1:8%全元素赋值方式s=[235];%产生单下标数组行数组A(s)%由“单下标行数组”寻访产生A元素组成的行数组Sa=[102030]’%Sa是长度为3的“列数组”A(s)=Sa%单下标方式赋值A(:,[23])=ones(2)%双下标赋值方式:把A的第2、3列元素全赋为1(5)运行指令rand(‘state’,11),A=rand(3,10000);B=(A0.5);C=2*B-1;首先预测(C*C’)/100的运行结果,然后再在机器上验证。(本方法提供了产生通信等仿真中常需若干独立的双随机码的方法原型。)(6)在命令窗口执行下面指令,体味数组运算与矩阵运算的区别clear;A=zeros(2,3);A(:)=1:6;%全元素赋值法A=A*(1+i)%运用标量与数组乘产生复数矩阵A_A=A.'%数组转置,即非共轭转置,其中单引号实现转置功能A_M=A'%矩阵转置,即共轭转置二.编写如图所示波形的MATLAB脚本文件,图中虚线为正弦波,要求它分别在21及22处削顶。图1可能用到的额外指令:find、holdon、holdoff、legend,具体使用方法使用help+指令名来解答。[实验结果]一.数组的创建和寻访1、一维数组2、二维数组(1)(3)(4)(5)(6)二、实验三[实验内容]一.串数组的创建和寻访1.先请实际操作下例,以体会数值量与字符串的区别clear%清除所有内存变量a=12345.6789%给变量a赋数值标量class(a)%对变量a的类别进行判断a_s=size(a)%数值数组a的“大小”b='S'%给变量b赋字符标量(即单个字符)class(b)%对变量b的类别进行判断b_s=size(b)%符号数组b的“大小whos%观察变量a,b在内存中所占字节2.已知串数组a=”Thisisanexample.”,试将其到序输出。3.接上题,试执行ascii_a=double(a),观察其ASCII码,并将ASCII码变回字符串。4.设A=”这是一个算例”,重复上面的2-3。5.尝试用直接输入法在命令窗口创建字符串s,第一行时“Thisstringarray”,第二行是“hasmultiplerows.”。6.利用串操作函数char、str2mat、strvcat分别写出使以下这段文字成为字符串的程序,注意保持这段文字的格式。在英式用法中,引号通常是单引号,如‘Fire!’。InGBusagequotationmarksareusuallysingle:’Fire!’.二.脚本文件实现30,3cos14.0tteyt,并在图上标出图名和极大值点坐标。如下图所示。可能用到的函数:num2str,char,text,holdon,具体应用自己查找help文档。三.编程实现分别用for或while循环语句计算:63263022212iiK的程序,并给出运行结果。此外,实现一种避免使用循环的的计算程序。四.函数文件1.详读并运行下面的circle.m函数文件。体会M函数文件的编写结构及方法。%后面的内容称为注释行,不被执行,起注释说明作用。2.编写一个简单的函数文件,它具有如下性质:该函数被调用时,如果不指定输入变量,则自动输出“用户,你忘记给定输入变量了!”;当输入大于1的整数时,则输出“你是一个合法用户!”;当输入的是一个非正整数时,函数文件会给出一个错误提示“你是非法用户!”【提示:可能用到disp,error等指令,使用方法自己查询帮助】【实验结果】一、1.functionsa=circle(r,s)%首行是函数声明行,以function开头%CIRCLE以制定颜色画半径为r的圆面%r指定半径的数值%s指定线色的字符串%sa圆面积%%circle(r)利用蓝实线画半径为r的圆周线%circle(r,s)利用串s指定的线色画半径为r的圆周线%sa=circle(r)计算圆面积,并画半径为r的蓝色圆面%sa=circle(r,s)计算圆面积,并画半径为r的s色圆面%ifnargin2%nargin表示输入宗量的变量个数,是系统保留变量error('输入宗量太多。');%error把引号的内容在命令窗口前加问号输endifnargin==1s='b';endclf%清图形窗口t=0:pi/100:2*pi;x=r*exp(i*t);ifnargout==0%nargin表示输出宗量的变量个数,是系统保留变量plot(x,s);elsesa=pi*r*r;fill(real(x),imag(x),s)%fill指令是填充颜色指令,具体看帮助endaxis('square')%使得输出图形坐标为正方形2、3、4、5、二、三、Circle(2)Circle(5)实验四【实验内容】一.仿照运行,体会数据可视化方法。1.已知12,,1,0n,16ny,运行下面程序,体会离散数据可视化方法。说明:plot和stem指令均可以实现离散数据的可视化,但通常plot更常用于连续函数中特殊点的标记;而stem广泛运行与数字信号处理中离散点的图示。用户在运行上面例程时会发现在命令窗口出现警告:Warning:Dividebyzero!即警告程序中出现非零数除以0的指令。MATLAB对于这种情况并不中止程序只是给该项赋值为inf以做标记。2.下面时用图形表示连续调制波形tty9sinsin,仿照运行,分析表现形式不同的原因。二.编程实现。1.用图形表示连续调制波形tty9sinsin,过零点及其包络线,如下图所示。2.编写函数[x,n]=stepseq(n0,n1,n2),实现:%用plot实现离散数据可视化n=0:12;%产生一组自变量数据y=1./abs(n-6);%计算相应点的函数值plot(n,y,'r*','MarkerSize',20)%用红花标出数据点gridon%画坐标方格%用stem实现离散数据可视化n=0:12;y=1./abs(n-6);stem(n,y)cleart1=(0:11)/11*pi;y1=sin(t1).*sin(9*t1);t2=

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功