MATLAB入门与数学建模初步(第3次课)

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

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

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

资源描述

1第一讲MATLAB入门与数学建模初步MATLAB语言被称为演算纸语言MATLAB中各种命令可以完成许多单一的任务,对于某些较为复杂的问题,仅靠现有的命令或函数来解决,往往是难以达到目的,为此,要运用MATLAB编程语言编制程序,形成M文件。M文件一般包含:数据输入,数据处理和数据输出三部分,其中数据处理是核心。程序编写调试完成后,需要存盘,形成永久性文件,可以随时对它进行调用或修改。文件名以字母开头,但不能用专用变量名,如pi等。MATLAB中每一个命令都是一个M文件。M文件分成两大类,一种是M脚本文件,另一种是M函数文件,两者有很大的区别。2第一讲MATLAB入门与数学建模初步MATLAB的数据输入和数据输出提示对话输入x=input('Pleaseinputx=');s=input('请输入字串a=','s');格式控制输出fprintf('x=%.5f\n',pi);fprintf('y=%10.5s\n',s);%help鼠标坐标获取函数ginputginput(n)图像读入写出函数imreadimwriteimshow声音读入写出函数wavreadwavewrite直接输入x=2;A=[1,2;3,4];s='manystring!';f=sym('sin(x)+2^x'),C={123,'why',sym('sin(x)')};直接输出x,A,disp(x);disp(s);disp(['so',s]);eval(f),subs(f,3),subs(f,'t'),C{1},C{2},C{3}3第一讲MATLAB入门与数学建模初步MATLAB的数据输入和数据输出鼠标坐标获取函数ginputginput(n)在随后综合实例中介绍图像读入写出函数imreadimwriteimshowmkdir('c:/test','pic');str='c:\test\pic\bmp';x=0:pi/10:2*pi;plot(x,sin(x),'-rs');idx=datenum(date);saveas(gcf,[str,num2str(idx),'.bmp']);%保存当前绘图pause(3);figure;imshow([str,num2str(idx),'.bmp']);声音读入写出函数wavreadwavewritetts('TTS是TextToSpeech的缩写,即从文本到语音,是人机对话的一部分,让机器能够说话,正如我一样')需要安装微软TTS语音引擎(TTSEngines)先4第一讲MATLAB入门与数学建模初步MATLAB的数据输入和数据输出TTS在网站“无障碍浏览”中的应用5第一讲MATLAB入门与数学建模初步常见数据类型及引用:%数值类型:x=3.14A=[12;34]%字符类型:str='helloworld!'eval('disp(''china'')')%符号类型:symsabcf=2*a+b^2-2^ca=1/2;b=3;c=2;eval(f)myfun=sym('sin(x)');eval(myfun)%元胞类型:d={x,A;str,myfun}d{1},d{2},d{3},d{4}d(1,1)d{1,1}%注意区别d(2,1)={'welcome!'}%结构类型:stu=struct('name',{'tony','linda'},'age',{'22','20'});stustu.namestu(1)stu(1).name%注意区别6第一讲MATLAB入门与数学建模初步M脚本文件和M函数文件的区别一般通过MATLAB的M-fileEditor编写程序前者只是一系列语句的组合,一般不需要输入参数和输出参数,过程中产生的变量保留在基本变量空间(即base空间)后者在文件开头必须有function声明和函数名,且函数名必须与文件名相同,一般有输入参数和输出参数(也可留空),过程中产生的变量存在于函数变量空间(函数执行完即消失)M脚本文件实例:jia23.mx=2;y=3;z=x+y;M函数文件实例:jiaxy.mfunctionz=jiaxy(x,y)z=x+y;p237~2387第一讲MATLAB入门与数学建模初步M文件中的变量传递:全局变量M函数文件使用的变量都是局部变量,只存在于其专属变量空间,无法被命令行或其他函数引用,除非声明为全局变量:%jubu.mfunctionjubu(a,b)globalc;%将局部变量声明为全局变量c=a+b;globalc;d=2*c+1;%在命令行中引用全局变量,实现变量传递%dyong.mfunctione=dyongglobalc;%在函数中引用全局变量,实现变量传递e=c^2;8第一讲MATLAB入门与数学建模初步M文件中的变量传递:指派空间MATLAB的基本变量空间是base空间,每个运行着的函数有其独立变量空间,各空间之间的变量是不能够直接引用的,在函数退出之后,该函数的变量空间也就立即被注销。利用assignin与evalin指令,可以实现变量在变量空间之间的共享:functionfflow()disp('首先是fflow函数输出')str1='Hello';name='fflow';disp([str1,name]);assignin('base','str2',str1);assignin('base','name','sissi');evalin('base','disp([str2,name])');sissifunctionsissi()disp('然后是sissi函数输出')evalin('base','disp([str2,name])');evalin('caller','disp([str1,name])');9第一讲MATLAB入门与数学建模初步M文件中的变量传递:文本文件文本文件可作为不同函数间变量传递的寄存处,适用于大量数据传递,而不需使用全局变量或指派变量空间,具有一定的便利性。文本文件的写出和读入A=[1,2,3;4,5,6;7,8,9];fid=fopen('B.txt','w');fprintf(fid,'%4.2f%4.2f%4.2f\n',A);fclose(fid);loadB.txt;%也可以使用textread函数导入含有字符串和数值的文本文件info=textread('info.txt','%q')email=char(info(3))%元胞对象字符化post=numeric(char(info(2)))%元胞对象数值化Info.txt10第一讲MATLAB入门与数学建模初步M文件中选择控制命令单项选择:格式:if(conditionistrue)commands;end作用:若条件成立,则执行命令集commands.否则,不执行。11第一讲MATLAB入门与数学建模初步M文件中选择控制命令■求n个实数中最大的数MA=100*rand(3,4)[m,n]=size(A(:));M=A(1);fori=2:mifMA(i)M=A(i);endendfprintf('M=%.4f\n',M);12第一讲MATLAB入门与数学建模初步M文件中选择控制命令多项选择:格式:if(conditionistrue)commands;elseif(conditionistrue)commands;...elsecommands;end作用:若条件成立,则执行命令集commands.否则,不执行。13第一讲MATLAB入门与数学建模初步M文件中选择控制命令■建立符号函数sign(x)x=input('x=');ifx0sn=1;elseifx==0sn=0;elsesn=-1;enddisp(['answeris',num2str(sn)])%输出含变量字符串14第一讲MATLAB入门与数学建模初步M文件中选择控制命令多项选择:格式:switchexpresscaseconditioncommands;...otherwisecommands;end作用:若条件成立,则执行对应命令集commands,随后跳出;否则执行otherwise对应命令集commands。15第一讲MATLAB入门与数学建模初步M文件中选择控制命令■选择身份信息%name='tony';name=input('请输入姓名','s');switchlower(name)case{'tom','tony'}disp(['Theboyis',name])case'linda'disp(['Thegirlis',name])otherwisedisp('Unknown!')end16第一讲MATLAB入门与数学建模初步M文件中循环控制命令步进循环:格式:fori=n1:(step):n2commands;end作用:重复执行命令集commands.条件循环:格式:while(conditionistrue)commands;end作用:重复执行命令集commands.注意:循环终止语句break和循环跳出语句continue17第一讲MATLAB入门与数学建模初步M文件中循环控制举例■求和:s=1+2+…+nn=input('请输入n=');s=0;fori=1:ns=s+i;fprintf('i=%.0f,s=%.0f\n',i,s);end■求和:s=1+2+…+n3000s=0;k=1;whiles3000s=s+k;fprintf('k=%.0f,s=%.0f\n',k,s);k=k+1;end18第一讲MATLAB入门与数学建模初步M文件中循环控制举例■求100到200之间第一个能被21整除的整数forn=100:200ifrem(n,21)~=0continueendbreakenddisp(n)forn=100:200ifrem(n,21)==0breakendenddisp(n)19第一讲MATLAB入门与数学建模初步M文件中试探控制命令试探执行:格式:trycommands;catchcommands;end作用:试探性执行try后命令集commands,如果执行过程中出错,则将出错信息赋给系统变量lasterr,并转去执行catch后命令集commands。这种试探性执行语句是其他高级语言所没有的。20第一讲MATLAB入门与数学建模初步M文件中试探控制举例矩阵乘积:试探矩阵乘法和矩阵点乘A=[123;456];B=[789;101112];tryC=A*B;disp('适用矩阵乘法');catchC=A.*B;disp(lasterr);disp('适用矩阵点乘');enddisp(C);21第一讲MATLAB入门与数学建模初步M文件的特殊执行方式■字串执行:方便构造特殊的命令行,然后执行str=['A',num2str(fix(10*rand(1))),'=123',];eval(str);■参数传递:便于在函数之间传递参数,并执行feval('sin',pi)%将参数传递给函数,以函数名方式feval(@sin,pi)%将参数传递给函数,以函数句柄方式■内联函数:创建局部函数,而不需新建M文件f=inline('x.^2+cos(a*x)-b','x','a','b');%称为定义内联函数y=f(2,3,1)%属于局部函数,而不需要新建M函数文件■递归调用:递归调用函数自身,实现特殊计算functionf=jiec(n)ifn==1f=1;%注意设置递归结束的条件elsef=n*jiec(n-1);%函数的递归调用end22第一讲MATLAB入门与数学建模初步M文件编程综合实例一:■三峡水域自动巡航设计23第一讲MATLAB入门与数学建模初步M文件编程综合实例一:■三峡水域自动巡航设计%将sx.jpg和map.m拷贝到work目录,随后执行map即可Sx.rar24第一讲MATLAB入门与数学建模初步M文件编程综合实例二:■寻找水仙花数数153有一个特殊的性质153=1^3+5^3+3^3,那么

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

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

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

×
保存成功