欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    数学建模 MATLAB入门.ppt

    • 资源ID:6295527       资源大小:308KB        全文页数:59页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数学建模 MATLAB入门.ppt

    数学建模,MATLAB入门,0 Matlab介绍,MATLAB概况,MATLAB是矩阵实验室(MatrixLaboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算法问题要比用C,FORTRAN等语言完相同的事情简捷得多.当前流行的MATLAB 7/Simulink 包括拥有数百个内部函数的主包和三十几种工具 箱(Toolbox).工具箱又可以分为功能性工具箱和学科工具箱.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具箱是专业性比较强的工具箱,控制工具包,信号处理工具包,通信工具包等都属于此类.开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主箱文件和各种工具箱都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具箱.,MATLAB的语言特点,x1+2x2 3x3=83x1-4x2+2x3=-75x1+2x2 10 x3=19x1=1;x2=2;x3=-1;,引例1:求解线性方程组,解 编写M文件xxgh1.m如下:c=-0.4-0.28-0.32-0.72-0.64-0.6;A=0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08;b=850;700;100;900;Aeq=;beq=;vlb=0;0;0;0;0;0;vub=;x,fval=linprog(c,A,b,Aeq,beq,vlb,vub),引例2:求解线性规划,1矩阵及其运算,m=1 2 3 4;5 6 7 8;9 10 11 12 p=1 1 1 1 2 2 2 2 3 3 3 3说明:逗号或空格用于分隔某一行的元素;分号用于区分不同的行;输入矩阵时,严格要求所有行有相同的列;,1.1 矩阵的创建,MATLAB(shuzu1),x=a b c d e f 创建包含指定元素的行向量,x=first:last 创建从first开始,加1计数,到last结束的行向量,x=first:increment:last 创建从first开始,加increment计数,last结束的行向量,x=linspace(first,last,n)创建从first开始,到last结束,有n个元素的行向量,特殊矩阵的建立:.,MATLAB(matrix1),d=eye(m,n)产生一个m行、n列的单位矩阵,c=ones(m,n)产生一个m行、n列的元素 全为1的矩阵,b=zeros(m,n)产生一个m行、n列的零矩阵,a=产生一个空矩阵,当对一项操作无结 果时,返回空矩阵,空矩阵的大小为零.,MATLAB(shuzu2),(3)直接使用元素编址序号.x(a b c d)表示提取数组x的第a、b、c、d个元素构成一个新的数组x(a)x(b)x(c)x(d).,(2)访问一块元素:A(m,:)表示二维数组第m行元素,A(:,n)表示二维数组第n列元素,,(1)访问一个元素:x(i)表示访问数组x的第i个元素.,1.2 数组元素的访问,矩阵中元素的操作,MATLAB(matrix2),(1)矩阵A的第r行:A(r,:),(2)矩阵A的第r列:A(:,r),(4)取矩阵A的第i1i2行、第j1j2列构成新矩阵:A(i1:i2,j1:j2),(5)以逆序提取矩阵A的第i1i2行,构成新矩阵:A(i2:-1:i1,:),(6)以逆序提取矩阵A的第j1j2列,构成新矩阵:A(:,j2:-1:j1),(7)删除A的第i1i2行,构成新矩阵:A(i1:i2,:)=,(8)删除A的第j1j2列,构成新矩阵:A(:,j1:j2)=,(9)将矩阵A和B拼接成新矩阵:A B;A;B,(3)依次提取矩阵A的每一列,将A拉伸为一个列向量:A(:),数组的方向 前面例子中的数组都是一行数列,是行方向分布的.称之为行向量.数组也可以是列向量,它的数组操作和运算与行向量是一样的,唯一的区别是结果以列形式显示.,产生列向量有两种方法:直接产生 例 c=1;2;3;4 转置产生 例 b=1 2 3 4;c=b 说明:以空格或逗号分隔的元素指定的是不同列的元素,而以分号分隔的元素指定了不同行的元素.,(1)标量-数组运算 数组对标量的加、减、乘、除、乘方是数组的每个元素对该标量施加相应的加、减、乘、除、乘方运算.,设:a=a1,a2,an,c=标量,则:a+c=a1+c,a2+c,an+c a.*c=a1*c,a2*c,an*c a./c=a1/c,a2/c,an/c(右除)a.c=c/a1,c/a2,c/an(左除)a.c=a1c,a2c,anc c.a=ca1,ca2,can,MATLAB(shuzu3),1.3 数组的运算,(2)数组-数组运算 当两个数组有相同维数时,加、减、乘、除、幂运算可按元素对元素方式进行的,不同大小或维数的数组是不能进行运算的.,设:a=a1,a2,an,b=b1,b2,bn,则:a+b=a1+b1,a2+b2,an+bn a.*b=a1*b1,a2*b2,an*bn a./b=a1/b1,a2/b2,an/bn a.b=b1/a1,b2/a2,bn/an a.b=a1b1,a2b2,anbn,MATLAB(shuzu4),返回,(2)矩阵-矩阵运算 1 元素对元素的运算,同数组-数组运算。,(1)标量-矩阵运算 同标量-数组运算。,MATLAB(matrix3),2矩阵运算:矩阵加法:A+B矩阵乘法:A*B方阵的行列式:det(A)方阵的逆:inv(A)方阵的特征值与特征向量:V,D=eigA,返回,矩阵和数组相关函数,2字符串操作,在MATLAB中,字符串是用单撇号括起来的字符序列。MATLAB将字符串当作一个行向量,每个元素对应一个字符,其标识方法和数值向量相同。也可以建立多行字符串矩阵。,创建:str=AATTATACTTTAAGTTCTGTGG用号。访问:Str(i):str的第i个字符str(m:n):m到n的n-m1的子串str(m:end):m到最后一个字符的子串,常见的有关字符串操作的函数:Strmp(str1,str2):字符串str1,str2的比较;length(str):str的长度Strmatch(s1,s2):匹配Findstr:查找字符串Num2str:字符串转换,3结构体数组与细胞矩阵,结构体数组是根据属性名(field)组织起来的不同类型数据的集合,结构体的任何一个属性都可以包含不同数据类型,如字符串,矩阵,标量等。,函数命令:struct调用格式:s=struct(field1,value1,field2,value2,.)例如:stu=struct(name,Liu,Wang,Age,20,21)Stu(1):查看第1个结构体的数据;stu.name 查看所有的name数据Stu(2).name 查看第2个结构的name数据,7 路:机电学院,神山口,弋矶山11路:机电学院,新市口,bus=struct(name,platform,);bus(1).name=7路;bus(1).platform=机电学院 神山口 弋矶山;bus(2).name=11路;bus(2).platform=机电学院 新市口;,细胞数组是以单元为元素的数组,每个元素称为单元,每个单元可以包含其他数据类型数组,如字符串,矩阵等。它由”创建。例如:B=time,20,2 3访问:Bi,B的第i个单元。,Creating Cell Arrays,Cell indexingA(1,1)=1 4 3;0 5 8;7 2 9;A(1,2)=Anne Smith;A(2,1)=3+7i;A(2,2)=-pi:pi/10:pi;Content indexing A1,1=1 4 3;0 5 8;7 2 9;A1,2=Anne Smith;A2,1=3+7i;A2,2=-pi:pi/10:pi;,A(i):A的第i个单元;Ai:A的第i个单元的内容(值)单元值(内容)类型Celldisp cellplot,4 文件的操作与数据导入,4.1 文件的打开与关闭,fopen函数的调用格式为:fid=fopen(文件名,打开方式)其中文件名用字符串形式。常见的打开方式有:r表示对打开的文件读数据,w表示对打开的文件写数据,fid用于存储文件句柄值,句柄值用来标识该数据文件,其他函数可以利用它对该数据文件进行操作。例如:fid=fopen(bus_data.txt,r),关闭文件用fclose函数,调用格式为:sta=fclose(fid)该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回1。,4.2 文件的读写操作,fread 函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式为:A,COUNT=fread(fid,size,precision)其中A用于存放读取的数据,COUNT返回所读取的数据元素个数,fid为文件句柄,size为可选项,若不选用则读取整个文件内容,若选用则它的值可以是下列值:(1)N表示读取 N个元素到一个列向量。(2)Inf表示读取整个文件。(3)M,N表示读数据到MN的矩阵中,数据按列存放。precision代表读写数据的类型,写二进制文件fwrite 函数按照指定的数据类型将矩阵中的元素写入到文件中。其调用格式为:COUNT=fwrite(fid,A,precision)其中COUNT返回所写的数据元素个数,fid为文件句柄,A用来存放写入文件的数据,precision用于控制所写数据的类型,其形式与fread函数相同。,读文本文件fscanf 函数的调用格式为:A,COUNT=fscanf(fid,format,size)其中A用以存放读取的数据,COUNT返回所读取的数据元素个数。fid为文件句柄。format用以控制读取的数据格式,由%加上格式符组成,常见的格式符有d,f,c,s。size为可选项,决定矩阵A中数据的排列形式。,写文本文件fprintf 函数的调用格式为:COUNT=fprintf(fid,format,A)其中A存放要写入文件的数据。先按format指定的格式将数据矩阵A格式化,然后写入到fid所指定的文件。格式符与fscanf函数相同。,实例2:读取bus_data.txt的数据,fid=fopen(bus_data.txt,r)j=1;%人数计数器。str=cell(520,1);while feof(fid)=0 strj=fgetl(fid);%读取下一行 j=j+1;endfclose(fid);,实例3:读取grades.txt的数据,John 85 90 95Ann 90 92 98Martin 100 95 97Rob 77 86 93法一:使用import data;法二:使用textscan函数;法三:使用textread函数;法四:逐行读取。,5MATLAB语言编程,MATLAB中各种命令可以完成许多单一的任务,对于某些较为复杂的问题,仅靠现有的命令或函数来解决,往往是难以达到目的。为此,要运用MATLAB编程语言编制程序,形成M-文件。程序是使计算机完成各项运算的命令集,运行一个编制好的程序,计算机会从第一条命令行开始,一行接一行地执行相应的命令,直到终止。程序一般包含:数据输入,数据处理和结果输出三部分,其中数据处理是核心。,关系与逻辑运算,1、关系操作符,2、逻辑运算符,M-文件中输入、输出命令,直接赋值输入:提示对话输入(input命令)x=2;x=input(请输入参数 x=);a=1,2;3,4;a=input(请输入矩阵 a=);s=any string!;s=input(Please input s=);直接输出:格式控制输出(fprintf命令)x fprintf(x=%.0f,y=%.5fn,pi,pi);disp(a,b);fprintf(x=%5g,y=%10.5gn,N,pi);,控制流,MATLAB提供三种决策或控制流结构:for循环、while循环、if-else-end结构.这些结构经常包含大量的MATLAB命令,故经常出现在MATLAB程序中,而不是直接加在MATLAB提示符下.,M-文件中循环控制命令(for命令),格式:for i=1:(step):n commands;end 作用:重复执行命令集commands.,例2:求奇数和:s=1+3+5+(2k-1)n=input(请输入 n=);s=0;for i=1:2:n s=s+i;fprintf(i=%.0f,s=%.0fn,i,s);end,例1:求和:s=1+2+n n=input(请输入 n=);s=0;for i=1:n s=s+i;fprintf(i=%.0f,s=%.0fn,i,s);end,M-文件中条件循环命令(while命令),格式:while(condition is true)commands;end 作用:重复执行命令集commands.,例6:求和:s=1+2+n3000 s=0;k=1;while s3000 s=s+k;fprintf(k=%.0f,s=%.0fn,k,s);k=k+1;end,例7:求e:e=1+1+1/2!+1/3!+(1/n!=1.0e-8 p=p*i;r=1/p;e=e+r;fprintf(i=%.0f,r=%.9f,e=%.9f n,i,r,e);i=i+1;end,3、If-Else-End结构(1)有一个选择的一般形式是:if expression commands end 如果在表达式(expression)里的所有元素为真,就执行if和end语句之间的命令串commands.,MATLAB(fun1),先建立M文件fun1.m定义函数f(x),再在Matlab命令窗口输入fun1(2),fun1(-1)即可。,2)有三个或更多的选择的一般形式是:if(expression1)commands1 else if(expression2)commands2 else if(expression3)commands3 else if elsecommands endendend end,先建立M文件fun2.m定义函数f(x),再在Matlab命令窗口输入fun2(2),fun2(0.5),fun2(-1)即可。,MATLAB(fun2),返回,6M文件,MATLAB的内部函数是有限的,有时为了研究某一个函数的各种性态,需要为MATLAB定义新函数,为此必须编写函数文件.函数文件是文件名后缀为M的文件,这类文件的第一行必须是一特殊字符function开始,格式为:function 因变量名=函数名(自变量名)函数值的获得必须通过具体的运算实现,并赋给因变量.,M文件建立方法:1.在Matlab中,点:File-New-M-file 2.在编辑窗口中输入程序内容 3.:File-Save,存盘,M文件名必须 与函数名一致。,Matlab的应用程序也以M文件保存。,例:定义函数 f(x1,x2)=100(x2-x12)2+(1-x1)2,function f=fun(x)f=100*(x(2)-x(1)2)2+(1-x(1)2,1.建立M文件:fun.m,MATLAB(fun),2.可以直接使用函数fun.m,例如:计算 f(1,2),只需在Matlab命令窗口键入命令:x=1 2fun(x),返回,调试经验,(1)去掉文件中所选择的行的分号,以便中间结果显示在命令窗口中。(2)在文件中加入显示感兴趣的变量的语句(包括使用disp在内)。(3)把keyboard命令放在文件中所选择的地方,给键盘暂时控制权。这样,可以查询函数空间并按需要改变其值。(4)利用echo命令,使运行时在屏幕上逐行显示文件内容:echo on 能显示m脚本文件;echo FunName on 能显示名为FunName的M函数文件。(5)在M文件开始,在function语句前加上,将函数M文件改变为脚本M文件。当MATLAB执行该脚本M文件时,该空间就是MATLAB工作空间。这样,当发生错误时可以询问。,程序的优化,1)尽量避免使用循环 循环语句及循环体经常被认为是MATLAB编程的瓶颈问题。改进这样的状况有两种方法:a.尽量用向量化的运算来代替循环操作;b.在必须使用多重循环的情况下,如果两个循环执行的次数不同,则建议在循环的外环执行循环次数越少的,内环执行循环次数越多的,这样也可以显著提高速度。,2)大型矩阵的预先定维 给大型矩阵动态地定维是个很浪费时间的事。建议在定义大矩阵时,首先用MATLAB的内在函数,如zeros()或ones()对之先进行定维,然后再进行赋值处理,这样会显著减少所需的时间。3)优先考虑内在函数 矩形运算应该尽量采用MATLAB的内在函数,因为内在函数是由更底层的编程语言C构造的,其执行速度显然快于使用循环的矩阵运算。,4)采用有效算法 在实际应用中,解决同样的数学问题经常有各种各样的算法。例如求解定积分的数值解法在MATLAB中就提供了两个函数quad()和quad8(),其中后一个算法在精度,速度上都能明显高于前一种方法。,5)应用Mex技术 虽然采用了很多措施,但执行速度仍然很慢,比如说耗时的循环视不可避免的,这样就应该考虑用其他语言,如C或Fortran语言.按照Mex技术要求的格式编写相应部分的程序,然后通过编译连接,形成在MATLAB可以直接调用的动态连接库(DLL)文件,这样可以显著地加快运算速度。,谢 谢!,

    注意事项

    本文(数学建模 MATLAB入门.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开