MATLAB经典数学建模教程

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

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

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

资源描述

1第1节Matlab基本知识一、Matlab的主要功能Matlab是一种功能非常强大的工程语言,诞生于20世纪70年代,1984年正式推向市场。2002年8月,Matlab6.5开始发布。是进行科学研究和产品开发必不可少的工具。数值和符号计算矩阵(数组)的四则运算(Matrix+Laboratory)、数值差分、导数、积分、求解微分方程、微分方程的优化等数字图像、数字信号处理工程和科学绘图控制系统设计财务工程建模、仿真功能二、Matlab的界面1.命令窗口(CommandWindow):Matlab各种操作命令都是由命令窗口开始,用户可以在命令窗口中输入Matlab命令,实现其相应的功能。此命令窗口主要包括文本的编辑区域和菜单栏(如:四则运算;“;”禁止显示变量的值;↑↓遍历以前的命令)。在命令窗口空白区域单击鼠标右键,打开快捷菜单,各项命令功能如下:EvaluateSelection:打开所选文本对应的表达式的值。OpenSelection:打开文本所对应的MatLab文件。Cut:剪切编辑命令。Paste:粘贴编辑命令。2.M-文件编辑/调试(Editor/Debugger)窗口MatlabEditor/Debugger窗口是一个集编辑与调试两种功能于一体的工具环境。M-文件(函数文件)什么是M-文件:它是一种和Dos环境中的批处理文件相似的脚本文件,对于简单问题,直接输入命令即可,但对于复杂的问题和需要反复使用的则需做成M-文件(ScriptFile)。创建M-文件的方法:Matlab命令窗的File/New/M-file。在Matlab命令窗口运行edit。M-文件的扩展名:*.m执行M-文件:F5M文件的调试选择Debug菜单,其各项命令功能如下:Step:逐步执行程序。Stepin:进入子程序中逐步执行调试程序。2Stepout:跳出子程序中逐步执行调试程序。run:执行M-文件。GoUntilCursor:执行到光标所在处。ExitDebugMode:跳出调试状态。函数文件的创建要求:文件名与函数名必须相同,如sin(x)必有sin.m函数文件存在。要求实参和形参位置一一对应。形参在工作空间中不会存在。可以编写递归函数,可以嵌套其他函数。可以用return命令返回,也可以执行到终点返回3.工作空间(Workspace)窗口:显示目前保存在内存中的Matlab的数学结构、字节数、变量名以及类型窗口。保存变量:File菜单\SaveWorkspaceas命令行:save文件名装入变量:File菜单\ImportData命令行:Load文件名4.现在目录窗口(CurrentDirectory)5.命令历史窗口(CommandHistory):提供先前使用过的函数,可以复制或者再次执行这些命令。Matlab帮助系统Matlab在命令窗口提供了可以获得帮助的命令,用户可以很方便的获得帮助信息。例如:在窗口中输入“helpfft”就可以获得函数“fft”的信息。常用的帮助信息有help,demo,doc,who,whos,what,which,lookfor,helpbrowser,helpdesk,exit,web等。三、关于变量变量命名规则:变量名是不包含空格的单个词变量名区分大小写变量名必须以字母开头的字母、数字、下划线的组合,最多19个字符。Matlab提供的标准函数名均以小写字母开头特殊变量名:ans缺省变量名pi圆周率i,j虚数单位eps无穷小inf,Inf无穷大realmax最大正实数realmin最小正实数清除变量的值clearclear变量名1变量名2显示驻留内存的变量名whowhos3第2节Matlab编程一、矩阵(数组)的输入1、直接输入直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔,且空格个数不限;不同的行用分号(;)分隔。所有元素处于一方括号([])内;多维矩阵用多重方括弧。可建立复数矩阵如:Null_M=[]%生成一个空矩阵可建立复数矩阵R=[1,2,3;4,5,6]I=[7,8,9;10,11,12]Z=R+I*j2.由M文件方式建立,今后使用键入M文件名即可建立相应矩阵2、利用函数输入“:”表达式,产生等差行向量start:step:end或start:end(step=1)如:t=1:20产生等距输入:linspace(a,b,n)将〔a,b〕区间分成n-1个等距小区间产生随机排列:randperm(n)产生1~n之间整数的随机排列3、特殊矩阵输入zeros(n)生成n×n全零阵,zeros(a,b)元素全为0的a×b维矩阵,以下各函数同理具有该类型。zeros(size(A))生成与矩阵A相同大小的全零阵,ones(a,b)元素全为1的a×b维矩阵eye(a,b)对角线上的元素为1的a×b维矩阵rand(a,b)产生a×b维均匀分布的随机矩阵,其元素在(0,1)内rand无变量输入时只产生一个随机数randn(a,b)产生a×b维正态分布的随机矩阵4.矩阵的转置和逆矩阵X的转置:X’(图像顺时针旋转90°,并水平镜像)如:a=imread('D:\2-1.bmp');b=a';subplot(1,2,1),subimage(a),subplot(1,2,2),subimage(b)X的逆矩阵inv(X)二、矩阵元素的访问及其大小的确定访问第n个元素:X(n)(n=1)访问多个元素:X([n1,n2,n3……])或X(1:10)确定元素的个数:numel(X)确定矩阵的大小:[m,n,l]=size(X)三、矩阵的算数运算数与矩阵的运算:m等价于m.m+A:m与A中各元素相加4m-A:m与A中各元素相减m×A:m与A中各元素相乘m./A:m除以A中各元素(没有m/A)m\A:A中各元素除以m矩阵与矩阵的运算A+B:A、B对应元素相加A-B:A、B对应元素相减A×B:A、B矩阵按线性代数中矩阵乘法运算进行相乘(注意维数匹配)A.*B:A、B对应元素相乘(注意维数相同)A/B:A除以B矩阵(A×B-1)(注意维数匹配)A./B:A除以B中各元素A\B:B除以A矩阵(A-1×B)(注意维数匹配)A.\B:B除以A中各元素A^m:相当于矩阵A×矩阵A×矩阵A…….(m为小数即是矩阵的开方运算)(注意维数匹配)A.^m:矩阵A中各元素的m次方A.^B:矩阵A中各元素的进行B中对应元素次方(注意维数相同)四、关系运算、=、、=、==、~=六种关系运算符。关系成立结果为1,否则为0。五、逻辑运算设矩阵A和B都是m×n矩阵或其中之一为标量,在MATLAB中定义了如下的逻辑运算:&、|、~、xor(真为1,假为0)(1)矩阵的与运算格式A&B或and(A,B)说明A与B对应元素进行与运算,若两个数均非0,则结果元素的值为1,否则为0。(2)或运算格式A|B或or(A,B)说明A与B对应元素进行或运算,若两个数均为0,则结果元素的值为0,否则为1。(3)非运算格式~A或not(A)说明若A的元素为0,则结果元素为1,否则为0。(4)异或运算格式xor(A,B)说明A与B对应元素进行异或运算,若相应的两个数中一个为0,一个非0,则结果为0,否则为1。六、集合运算1.两个集合的交集intersect2.检测集合中的元素ismember3.两集合的差setdiff4.两个集合交集的非(异或)函数setxor5.两集合的并集union56.取集合的单值元素unique七、MatLab的控制流由各种语句构成语句后面加“;”号,不显示运算结果%开头表示是注释语句赋值语句变量=表达式表达式(相当于将值付给ans变量)演示(三)for循环结构【例】一个简单的for循环示例。fori=1:10;%i依次取1,2,…10,.x(i)=i;%对每个i值,重复执行由该指令构成的循环体,end;x%要求显示运行后数组x的值。x=12345678910while循环结构【例】Fibonacci数组的元素满足Fibonacci规则:12kkkaaa,),2,1(k;且121aa。现要求计算出该数组中第一个大于10000的元素。a(1)=1;a(2)=1;i=2;whilea(i)=10000a(i+1)=a(i-1)+a(i);%当现有的元素仍小于10000时,求解下一个元素。i=i+1;end;i,a(i),i=21ans=10946if-else-end分支结构【例1】一个简单的分支结构。cost=10;number=12;ifnumber8sums=number*0.95*cost;end,sumssums=114.0000【例2】用for循环指令来寻求Fibonacc数组中第一个大于10000的元素。n=100;a=ones(1,n);6fori=3:na(i)=a(i-1)+a(i-2);ifa(i)=10000a(i),break;%跳出所在的一级循环。end;end,ians=10946i=21switch-case结构【例】学生的成绩管理,演示switch结构的应用。clear;%划分区域:满分(100),优秀(90-99),良好(80-89),及格(60-79),不及格(60)。fori=1:10;a{i}=89+i;b{i}=79+i;c{i}=69+i;d{i}=59+i;end;c=[d,c];Name={'Jack','Marry','Peter','Rose','Tom'};%元胞数组Mark={72,83,56,94,100};Rank=cell(1,5);%创建一个含5个元素的构架数组S,它有三个域。S=struct('Name',Name,'Marks',Mark,'Rank',Rank);%根据学生的分数,求出相应的等级。fori=1:5switchS(i).Markscase100%得分为100时S(i).Rank='满分';%列为'满分'等级casea%得分在90和99之间S(i).Rank='优秀';%列为'优秀'等级caseb%得分在80和89之间S(i).Rank='良好';%列为'良好'等级casec%得分在60和79之间S(i).Rank='及格';%列为'及格'等级otherwise%得分低于60S(i).Rank='不及格';%列为'不及格'等级endend%将学生姓名,得分,登记等信息打印出来。disp(['学生姓名','得分','等级']);disp('')fori=1:5;disp([S(i).Name,blanks(6),num2str(S(i).Marks),blanks(6),S(i).Rank]);end;学生姓名得分等级Jack72及格Marry83良好7Peter56不及格Rose94优秀Tom100满分try-catch结构【例】try-catch结构应用实例。clear,N=4;A=magic(3);%设置3行3列矩阵A。tryA_N=A(N,:),%取A的第N行元素catchA_end=A(end,:),%如果取A(N,:)出错,则改取A的最后一行。endlasterr%显示出错原因A_end=492ans=Indexexceedsmatrixdimensions.8第二章符号数学工具(SymbolicMathToolbox)第1节符号表达式符号表达式是代表数字、函数、算子和变量的MATLAB字符串,或字符串数组。不要求变量有预先确定的值,符号方程式是含有等号的符号表达式。如表2.1所列。表2.1符号表达式在MATLAB中的表示12xn'1/(2*x^n)'12yxy='1/sqrt(2*x)'cos()sin()xx22'cos(x^2)-sin(2*x)'MabcdM=sym('[a,b;c,d]')xxdxab31f=int('x^3/sqrt(1-x)','a','b')注意:加单引号’’表示

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

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

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

×
保存成功