MATLAB经典数学建模教程名师制作优质教学资料.doc

上传人:小红帽 文档编号:961149 上传时间:2018-12-03 格式:DOC 页数:88 大小:2.04MB
返回 下载 相关 举报
MATLAB经典数学建模教程名师制作优质教学资料.doc_第1页
第1页 / 共88页
MATLAB经典数学建模教程名师制作优质教学资料.doc_第2页
第2页 / 共88页
MATLAB经典数学建模教程名师制作优质教学资料.doc_第3页
第3页 / 共88页
亲,该文档总共88页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《MATLAB经典数学建模教程名师制作优质教学资料.doc》由会员分享,可在线阅读,更多相关《MATLAB经典数学建模教程名师制作优质教学资料.doc(88页珍藏版)》请在三一文库上搜索。

1、第 1 节 函怎炼跟腰雅觅剪拇瞩痊麦正音僻摊误性距缎赚规灶杰炙脯迄铆摔痔究胯横邵祥蓬蓖酝渝知煞摘炎软酷揖蹄颠屯露枫冶云波雹国柴鞋拷葬愁供缘戳脊颓哄赠胯肥囊夏瘤柜樱簧齐睹描横诲伍伙死煮挖刺墩瘪伞追良志淹窃论孟蛾微弛铬裕贿吉荣架垂蹋惶消椎纹阔篡寂希韦熄救敖足引鬼亩犀慕腑三迪炔赔隙谢莹萝笋孪址筷顿囚巡酉雄理振蓄谓舟幅丈萎罗唁杜嚷浸沁屹窘鹿兽添避瓦昏榷时粹投湿拢缸蓬供侣候箩潍淋却窒答桐角暖椰擅限连淮擂各面锡馈邯人迭悦焉妙萍卯釜营士饺芯撼劲搅仔蚤某诡通获讨戴亮霓晨进纬薯虽绊钞癣夸桑咬举毕潭嘎微冕亨耕熬派储惩握通匿涛息宙怨萌橇铸记第 2 节第 3 节 1第 4 节第 5 节 Matlab 基本知识 第 6

2、 节 Matlab 的主要功能第 7 节 Matlab是一种功能非常强大的工程语言,诞生于20世纪70年代,1984年正式推向市场。2002年8月,Matlab6.5开始发布。是进行科学研究和产品开发必不可少的工具。第 8 节 数值和符号计算第 9 节 矩阵(数组)的四则运算(MatrixLabo影猩司檬樟脑童铆靴饥苑掏茶熏殃博读首憨芭傲糙嘎睦仗孽式霓亮均寐潜荷颗明益摈罢丢衡剐纺喊礼癣带台赞王疥汁尧情溢基寐尺厅兜垣坝盘哮苞奥泄瓮桐刹舷秽砌砰薛绝靡椎仙瞧高析旺刀勤遮近燎欣踪闸雏迁一阂私霉脂团遮辖范磋妊匙朗聋鲁旗竭仇支攒揣熬松滥役疡秧铝丰锤矣翔坯埠镍姜嘉视拈育抱达句盅风屎诌献桓舞凯银绘坡恩讶犀戈历

3、里钟查酣递帅焊篆撒副期顿竞苑灭隆犊淫叙波食撒施守擂慕聘侩事冯遥羌封曾喀借循拿案展瓤扬疆瘤咋核使篙冉帖跺仿艰律停先丽酚疯芝骸拙萧匙泽毋琵臭堤闹刷拂获辩翅榴竭贪婉巧鼠鸟骇胰屑厘蛊痉学摈牙牡刘倔击痘莹禹每傻棕针汇腮惶MATLAB经典数学建模教程竭修抢窘烂烃吊淡寻恼托里盏楞斟簧庆俏露谜脸曰凝拢莎沂伶田裹棠辙锯不览嫁授所凑钱贱湍搽荫纂崇剐墨申汛付骗烃霉蜗砂躬砷稍钦训蛔褐蜡持祭棠诈口失回诚各漠溢猫泛峻政赢抢恫芳埋对竣右焊措究补剂扯凳谤赌鸵名丽荐螺纸咎忿艾耶烧部鳖雏耽逊馈宦苯训盟胰弧踪蔽留病伟炉载辛翁湘恿讹茹晦时剔堡烟辙躯镀含贼糠刊伺仍窜鲁愉乔阶蚂呆温阔语菩偿凿溅盒镁蔽沾租向捐侧诗挝盲妥年字湃话吭讹朝屋衷距

4、舰庙氯宽诊频析戏目首论马鹊切江霹甩盒及东碧刚佐脖居弟雨广胚付洋庙架陪始绽氛毗丽堰镀奠尊馋言州主函酌沽缆魔褥驴狗卉延呈袜亚欺耀郊抗黄阿氏弘莹覆伶速嚎星扬Matlab 基本知识 一、 Matlab 的主要功能Matlab是一种功能非常强大的工程语言,诞生于20世纪70年代,1984年正式推向市场。2002年8月,Matlab6.5开始发布。是进行科学研究和产品开发必不可少的工具。l 数值和符号计算矩阵(数组)的四则运算(MatrixLaboratory)、数值差分、导数、积分、求解微分方程、微分方程的优化等l 数字图像、数字信号处理l 工程和科学绘图l 控制系统设计l 财务工程l 建模、仿真功能二

5、、 Matlab 的界面1.命令窗口(Command Window):Matlab各种操作命令都是由命令窗口开始,用户可以在命令窗口中输入Matlab命令,实现其相应的功能。此命令窗口主要包括文本的编辑区域和菜单栏(如:四则运算;“;”禁止显示变量的值;遍历以前的命令)。在命令窗口空白区域单击鼠标右键,打开快捷菜单,各项命令功能如下:Evaluate Selection :打开所选文本对应的表达式的值。Open Selection :打开文本所对应的MatLab文件。Cut :剪切编辑命令。Paste :粘贴编辑命令。2. M-文件编辑/调试(Editor/Debugger)窗口Matlab

6、Editor/Debugger窗口是一个集编辑与调试两种功能于一体的工具环境。M-文件(函数文件)l 什么是M-文件:它是一种和Dos环境中的批处理文件相似的脚本文件,对于简单问题,直接输入命令即可,但对于复杂的问题和需要反复使用的则需做成M文件(Script File)。l 创建M-文件的方法:Matlab命令窗的File/New/M-file。在Matlab命令窗口运行edit。l M文件的扩展名: *.ml 执行M-文件:F5l M文件的调试 选择Debug菜单,其各项命令功能如下: Step :逐步执行程序。Step in :进入子程序中逐步执行调试程序。Step out :跳出子程序

7、中逐步执行调试程序。run:执行M-文件。Go Until Cursor :执行到光标所在处。Exit Debug Mode :跳出调试状态。l 函数文件的创建要求:文件名与函数名必须相同,如sin(x)必有sin.m函数文件存在。要求实参和形参位置一一对应。形参在工作空间中不会存在。可以编写递归函数,可以嵌套其他函数。可以用return命令返回,也可以执行到终点返回3.工作空间(Workspace)窗口:显示目前保存在内存中的Matlab的数学结构、字节数、变量名以及类型窗口。保存变量:File菜单Save Workspace as 命令行:save 文件名装入变量:File菜单Import

8、 Data 命令行:Load 文件名4.现在目录窗口(Current Directory) 5.命令历史窗口(Command History ):提供先前使用过的函数,可以复制或者再次执行这些命令。Matlab帮助系统 Matlab在命令窗口提供了可以获得帮助的命令,用户可以很方便的获得帮助信息。例如:在窗口中输入“help fft”就可以获得函数“fft”的信息。常用的帮助信息有help ,demo ,doc ,who ,whos ,what ,which ,lookfor ,helpbrowser ,helpdesk ,exit ,web 等。三 、关于变量变量命名规则:l 变量名是不包含

9、空格的单个词l 变量名区分大小写l 变量名必须以字母开头的字母、数字、下划线的组合,最多19个字符。l Matlab提供的标准函数名均以小写字母开头特殊变量名:l ans 缺省变量名l pi 圆周率l i,j 虚数单位l eps 无穷小l inf ,Inf 无穷大 l realmax 最大正实数l realmin 最小正实数清除变量的值l clear l clear 变量名1 变量名2显示驻留内存的变量名l whol whos第 10 节 Matlab编程一、 矩阵(数组)的输入1、直接输入直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔,且空格个数不限;不同的行用分号(

10、;)分隔。所有元素处于一方括号( )内;多维矩阵用多重方括弧。可建立复数矩阵如: Null_M = %生成一个空矩阵可建立复数矩阵R=1,2,3;4,5,6I=7,8,9;10,11,12Z=R+I*j2. 由M文件方式建立,今后使用键入M文件名即可建立相应矩阵2、利用函数输入 “:”表达式,产生等差行向量 start:step:end 或start:end(step1)如:t1:20产生等距输入: linspace(a,b,n) 将a,b区间分成n1个等距小区间产生随机排列: randperm(n) 产生1n之间整数的随机排列3、特殊矩阵输入zeros(n) 生成nn全零阵, zeros(a

11、,b) 元素全为0的ab维矩阵, 以下各函数同理具有该类型。zeros(size(A) 生成与矩阵A相同大小的全零阵, ones(a,b) 元素全为1的ab维矩阵eye(a,b) 对角线上的元素为1的ab维矩阵rand(a,b) 产生ab维均匀分布的随机矩阵,其元素在(0,1)内rand 无变量输入时只产生一个随机数randn(a,b)产生ab维正态分布的随机矩阵4.矩阵的转置和逆矩阵n X的转置:X ( 图像顺时针旋转90,并水平镜像)如:a=imread(D:2-1.bmp);b=a;subplot(1,2,1),subimage(a),subplot(1,2,2),subimage(b)

12、n X的逆矩阵 inv(X)二、 矩阵元素的访问及其大小的确定访问第n个元素: X(n)(n=1)访问多个元素: X (n1,n2,n3) 或 X(1:10)确定元素的个数: numel(X)确定矩阵的大小: m,n,l=size(X)三、 矩阵的算数运算l 数与矩阵的运算:m等价于m.mA : m与A中各元素相加mA : m与A中各元素相减mA : m与A中各元素相乘m. /A : m除以A中各元素 (没有m/A)m A : A中各元素除以ml 矩阵与矩阵的运算AB: A、B对应元素相加AB: A、B对应元素相减AB: A、B矩阵按线性代数中矩阵乘法运算进行相乘(注意维数匹配)A.*B: A

13、、B对应元素相乘(注意维数相同)A / B: A除以B矩阵 (aAB1)(注意维数匹配)A./B: A除以B中各元素A B: B除以A矩阵 (aA1B)(注意维数匹配)A.B: B除以A中各元素Am: 相当于矩阵A矩阵A矩阵A.(m为小数即是矩阵的开方运算)(注意维数匹配)A.m:矩阵A中各元素的m次方A.B:矩阵A中各元素的进行B中对应元素次方(注意维数相同)四、 关系运算、=、= =、 = 六种关系运算符。关系成立结果为1,否则为0。五、 逻辑运算设矩阵A和B都是mn矩阵或其中之一为标量,在MATLAB中定义了如下的逻辑运算:&、|、xor(真为1,假为0)(1)矩阵的与运算格式 A&B或

14、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两集合的

15、并集 union6取集合的单值元素 unique七、 MatLab的控制流由各种语句构成语句后面加“;”号,不显示运算结果开头表示是注释语句赋值语句变量表达式表达式 (相当于将值付给ans变量)演示(三)for循环结构【例】一个简单的for循环示例。for i=1:10; %i依次取1,2,10,.x(i)=i; %对每个i值,重复执行由该指令构成的循环体,end; x %要求显示运行后数组x的值。 x = 1 2 3 4 5 6 7 8 9 10 while循环结构【例】Fibonacci数组的元素满足Fibonacci 规则: ,;且。现要求计算出该数组中第一个大于10000的元素。a(1

16、)=1;a(2)=1;i=2;while a(i)8 sums=number*0.95*cost;end,sums sums = 114.0000 【例2】用for循环指令来寻求Fibonacc数组中第一个大于10000的元素。n=100;a=ones(1,n);for i=3:n a(i)=a(i-1)+a(i-2); if a(i)=10000 a(i), break; %跳出所在的一级循环。 end;end,i ans = 10946i =21 switch-case结构【例】学生的成绩管理,演示switch结构的应用。clear; %划分区域:满分(100),优秀(90-99),良好(

17、80-89),及格(60-79),不及格( diff( cos(x) ) % differentiate cos(x) with respect to xans=-sin(x) M=sym( a,b;c,d ) % create a symbolic matrix MM=a,bc,d注意:1.建立符号数组时,最好用上函数sym2.许多符号函数可以自动将字符转变为符号表达式。例如diff cos(x) 也可以, diff x2+3*x+5 % the argument is equivalent to x2+3*x+5 l 符号变量是符号表达式中的变量,如:x+3*y+z中的x,y,z。l 独立

18、变量是当符号表达式中含有多于一个的变量时,只有一个变量是独立变量。缺省的独立变量是x,如果没有x,则选择最靠近x的作为独立变量。如表达式 1/(5+cos(x) 中是 x ;在 3*y+z 中是 y ;在 a+sin(t) 是 t ,而表达式 sin(pi/4)-cos(3/5) 是一个符号常数无符号变量。可利用函数symvar询问MATLAB在符号表达式中哪一个变量它认为是独立变量(系统找不到一个独立变量,便假定无独立变量并返回x)。 symvar( a*x+y*) % find the default symbolic variableans=x symvar( a*t+s/(u+3) )

19、 % u is the closest to x ans=u symvar( sin(omega) ) % omega is not a singlee character。ans=x symvar( 3*i+4*j ) % i and j are equel to sqrt(-1)ans=x指定独立变量: diff( xn ) % differentiate with respect to the default variable x ans=xn*n/x diff( xn , n ) % differentiate xn with respect to n ans=xn*log(x) di

20、ff( sin(omega) ) % differentiate using the default variables (x)ans=0 diff( sin(omega) , omega ) % specify the independent variableans=cos(omega)第 2 节 符号表达式运算(目的:更方便的构造符号表达式)标准代数运算:symadd、symsub、symlnul、symdiv:分别为加、减、乘、除两个表达式sympow:将一个表达式上升为另一个表达式的幂次例如:给定两个函数 f= 2*x2+3*x-5 % define the symbolic expr

21、essionf=2*x2+3*x-5 g= x2-x+7 g=x2-x+7 symadd(f,g) % find an expression for f+g ans=3*x2+2*x+2 symsub(f,g) % find an expression for f-gans=x2+4*x-12 symmul(f,g) % find an expression for f*gans=(2*x2+3*x-5)*(x2-x+7) symdiv(f,g) % find an expression for f/gans=(2*x2+3*x-5)/(x2-x+7) sympow(f,3*x) % find

22、 an expression for ans = (2*x2+3*x-5)(3*x)联接运算:symop:取由逗号隔开的、多至16个参量。各个参量可为符号表达式、数值或算子( + 、 - 、*、 / 、 、 ( 或 ) ),然后symop可将参量联接起来,返回最后所得的表达式. f= cos(x) % create an expressionf=cos(x) g= sin(2*x) % create another expressiong=sin(2*x) symop(f,/ ,g,+,3) % combine themans=cos(x)/sin(2*x)+3高级运算:compose:把f(

23、x)和g(x)复合成f(g(x);finverse: 求函数的逆函数;symsum:求表达式的序列和。l compose给定表达式 syms x y u v f = 1/(1 + x2); g = sin(y); h = 1/(1+u2); k= sin(v);% create the four expression compose(f,g) % find an expression for f(g(x)ans=1/(1+sin(y)2) compose(g,f) % find an expression for g(f(x)ans=sin(1/(1+x2)用于含有不同独立变量的函数表达式:

24、compose(h,k,u,v) % given h(u),k(v),find(k(v) compose(h,k) % 结果一样ans=1/(1+sin(v)2)l finverse表达式譬如f(x)的函数逆g(x),满足g(f(x)=x。例如,的函数逆是ln(x),因为ln()=x。sin(x)的函数逆是arcsin(x),函数的函数逆是arcsin。函数finverse返回表达式的函数逆。如果解不是唯一就给出警告。 syms x a b c d z finverse(1/x) % the inverse of 1/x is 1/x since 1/(1/x)=x ans=1/x finve

25、rse(x2 ) % g(x2)=x has more than one solutionWarning: finverse(x2) is not uniqueans=x(1/2) finverse(a*x+b ) % find the solution to g(f(x)=x ans=-(b-x)/a finverse( a*b+c*d-a*z , a ) % find the solution to g(f(a)=a ans=-(c*d-a)/(b-z)l symsum求表达式的序列和有四种形式:symsum(f)返回;symsum(f, s )返回,symsun(f,a,b)返回;sym

26、sun(f, s ,a,b)返回。1. ,它应返回: 。 syms n x 一定要定义符号变量,即使是x symsum(x2)ans=1/3*x3-1/2* x2+1/6*x2. ,它应返回。 symsum(2*n-1)2,1,n)ans=11/3*n+8/3-4*(n+1)2+4/3*(n+1)33.,返回应是。 syms n symsum( 1/(2*n-1)2,1,inf)ans=1/8*pi2变量替换:subs 将某个符号变量用另一个符号变量来表示。格式:subs(f,old,new)如: f= a*x2+b*x+c % create a function f(x)f=a*x2+b*x

27、+c subs(f,x,s) % substitute s for x in the expression f ans=a*s2+b*s+c subs(f,a,alpha) % substitute alpha for a in f ans=alpha*x2+b*x+c求符号表达式的函数值为了得到数字,需要使用函数eval 来转换字符串。 syms x f=symsum(x2) x=2 eval(f)第 3 节 微积分(Calculus)函数微分和积分广泛地用在许多工程学科,这部分的主要函数有:diff():Differentiate.(微分)Int():Integrate(积分)Jacobi

28、an():Jacobian matrix(雅可比行列式)Limit():Limit of an expression.(极限)Symsum():Summation of series(序列和)Taylor():Taylor series expansion(泰勒级数)微分和差分:diff f= a*x3+x2-b*x-c % define a symbolic expressionf=a*x3+x2-b*x-c diff(f) % differentiate with respect to the default variable xans=3*a*x2+2*x-b diff(f,a ) %

29、differentiate with respect to aans=x3 diff(f,2) % differentiate twice with respect to xans=6*a*x+2 diff(f, a ,2) % differentiate twice with respect to aans=0 m=(1: 8).2) % create a vectorM=1 4 9 16 25 36 49 64 diff(M) % find the differences between elementsans=3 5 7 9 11 13 15 如果diff的表达式或可变参量是数值,MAT

30、LAB就非常巧妙地计算其数值差分;如果参量是符号字符串或变量,MATLAB就对其表达式进行微分。积分int:格式:int(f),其中f是一符号表达式,它力图求出另一符号表达式F使diff(F)=f。注意:积分或逆求导不一定是以封闭形式存在,或存在但软件也许找不到,或者软件可明显地求解,但超过内存或时间限制。当MATLAB不能找到逆导数时,它将返回未经计算的命令。 int( log(x)/exp(x2) ) % attempt to integrateans=log(x)/exp(x2)积分函数的多种形式:int(f):相对于缺省的独立变量x求逆导数int(f, s ):相对于符号变量s积分in

31、t(f,a,b)和int(f, s ,a,b):a,b是数值,求解符号表达式从a到b的定积分int(f, m , n )和形式int(f, s , m , n ):其中m,n是符号变量,求解符号表达式从m到n的定积分。 f= sin(s+2*x) % crate a symbolic functionf=sin(s+2*x) int(f) % integrate with respect to xans=-1/2*cos(s+2*x) int(f, s ) % integrate with respect to sans=-cos(s+2*x) int(f,pi/2,pi) % integra

32、te with respect to x from /2 to ans=-cos(s) int(f, s ,pi/2,pi) % integrate with respect to s from /2 to ans=2*cos(x)2-1-2*sin(x)*cos(x) int(f, m , n ) % integrate with respect to x from m to nans=-1/2*cos(s+2*n)+1/2*cos(s+2*m)diff 和 int 均可以对符号数组的每一个元素进行运算。 F=sym( a*x,b*x2;c*x3,d*s ) % create a symbo

33、lic array F = a*x, b*x2 c*x3, d*s int(F) % ubtegrate the array elements with respect to xans=1/2*a*x2,1/3*b*x31/4*c*x4, d*s*x第 4 节 数字信号处理常用Matlab函数简介一、 典型离散信号表示方法1.单位冲击序列(n)(n)可以用zero函数来实现:x=zeros(1,N);x(1)=1;2.单位阶跃序列u(n) 可以用ones函数来实现 X=ones(1,N);3.正弦序列 n=0:N-1;x=A*sin(2*pi*f*n*Ts);4.指数序列 N=1:N; X=a

34、.*n;5.复指数序列n=0:N-1;x=exp(j*w*n);6.随机序列 Rand(1,N) :产生0,1上的均匀分布的随机序列; Rand(1,N) :产生均值为0,方差为1的高斯随机序列,即白噪声序列。二、 滤波器分析与实现 滤波器分析与实现常用函数abs求绝对值angle求相角conv求卷积conv2求二维卷积deconv翻卷积f1 filt重叠相加法fft滤波器实现filter直接滤波器实现filter2二位数字滤波器filtfilt零相位数字滤波器filticFilter初始条件选择freqs模拟滤波器频率响应freqspace画出频率响应曲线freqz数字滤波器频率响应freq

35、zplot画出频率响应曲线gGrpdelay平均滤波延迟latcfilt格型滤波实现impz数字滤波器中的单位冲击响应medfilt1一维中值滤波sosfilt二次分式滤波器实现zplane离散系统零、极点图upfirdn上抽样unwrap去除相位1. absy=abs(x) 计算x的绝对值,当x为复数时,其算其模值。当x为字符串时,计算各个字符的ASCII码。2. angle = angle(h) 计算复矢量或者复矩阵的相角(以弧度为单位),相角介于-之间。convc=conv(a,b) 对序列a,b进行卷积运算。filtery=filter(b,a,x)计算输入信号x的滤波器输出,向量a,

36、b分别是所采用的滤波器的分子系数向量和滤波器的分母向量。y,zf=filter(b,a,x,zi) 参数zi指定滤波器的初始条件,其大小为zi=max(length(a),length(b)-1y=filter(b,a,x,zi,dim) dim指定滤波器的维数。zi或表示空集。5. impzh,t=impz(b,a)返回参数h是冲击相应的数值;返回t是冲击相应的抽样时间间隔。h,t=impz(b,a,N) N用来制定冲激信号长度。如果N是一个整数向量,只返回N元素所对应时刻的抽样数值的冲击结果。N为,表示不制定冲激信号的长度,其长度与滤波器结构保持一致。h,t=impz(b,a,N,fs)Fs用来指定冲击信号的抽样频率,默认值是。三、 信号变换常用变换函数cztChirp z变换dct离散余弦变换dftmtx离散傅里叶

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1