2012matlab软件二

上传人:j****9 文档编号:54631898 上传时间:2018-09-16 格式:PPT 页数:53 大小:453KB
返回 下载 相关 举报
2012matlab软件二_第1页
第1页 / 共53页
2012matlab软件二_第2页
第2页 / 共53页
2012matlab软件二_第3页
第3页 / 共53页
2012matlab软件二_第4页
第4页 / 共53页
2012matlab软件二_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《2012matlab软件二》由会员分享,可在线阅读,更多相关《2012matlab软件二(53页珍藏版)》请在金锄头文库上搜索。

1、,MATLAB软件应用(二),MATLAB,四、大数据量的处理,(一)数据的读取 1.数据录入程序中,但占据很大空间 2.外部读取 (1)txt格式的读取命令 load 数据见cortex.txt x=load(路径/ cortex.txt),(2)excel格式的读取命令xlsread 数据见cortex.txt x=xlsread(路径/ cortex.xls),(二)矩阵操作,2.1 矩阵下标 (1)元素的提取和赋值,MATLAB通过确认下标,可以对矩阵进行插入子块、提取子块和重排子块的操作。 为了提取矩阵a的第n行、第m列的元素值,使用a(n,m)可以得到。同样,将矩阵a的第n行、第m

2、列的元素值赋为r,使用a(n,m)=r这样的命令。需要注意的是,如果在提取矩阵值时,行或列的值大于矩阵的大小,则出错;而在矩阵赋值时,如果行或者列超出矩阵的大小,则MATLAB自动扩充矩阵的规模,使得可以赋值,扩充部分以零填充。,例1 a=1 2 ;3 4; 5 6; a(2,1)=-7,a =1 2-7 45 6,若 a(2,3)=-7,a =1 2 0-7 4 -75 6 0,(2)矩阵的子块,利用矩阵下标,MATLAB还提供了子矩阵功能。同样是上面的a(n,m),如果n和m是向量,而不是标量,则将获得指定矩阵的子块. 同样,矩阵的子块还可以被赋值。如果在取子块时,n或m是“:”,则返回指

3、定的所有行或列。 如果在矩阵子块赋值为空矩阵(用表示),则相当于消除相应的矩阵子块. 矩阵的序号编址:按列计数(相当于从第一列开始编号)。,例2 b=1 2 3; 4 5 6; 7 8 9; 10 11 12; b(1,4,2:3),ans =2 311 12,若 b(:,2)=,b =1 34 67 910 12,(二)矩阵大小,1.在MATLAB命令行中,使用whos命令可以察看到所有变量的大小。 2.为了获得矩阵或者向量的大小,MATLAB还提供了两个有用的函数size和length。 size按照下面的形式使用: (1)size(a) (2)size(a,1)行数 (3)size(a,

4、2)列数。 length返回行数或者列数的最大值,即length(a)=max(size(a)。,size或length有什么用?,1.大数据量的矩阵数据检查,尤其是外部数据的读取检查。 2.编写通用程序,不会受到原始数据的改变的影响。 如绘图、循环的程序编写。,(三)矩阵的旋转,1.上下翻转 flipud(a) 2.左右翻转 fliplr(a) 3.旋转90 rot90(a)使得矩阵逆时针翻转90。,(四) 数据查找和排序,1.查找 子矩阵的查找使用find命令完成,它返回关系表达式为真的下标。例如: a=10:20; find(a15) ans =7 8 9 10 11,2.排序 (1)s

5、ortc=5 4;6 8;1 6; c1=sort(c,1)%对每一列排序 c2=sort(c,2 )%对每一行排序,c1 =1 45 66 8,c2 =4 56 81 6,(2)sortrowsc=5 4;6 8;1 6; sortrows(c,2) ans =5 41 66 8,按照第二列从小到大排序,保持行的关系不变。,问题: 1.若想按照从大到小排序,怎么办? 2.若想按照某一行排序,怎么办?,(五) 大量运算结果的显示,1.结果的显示 在命令窗口中读取。 2.利用矩阵分段显示 以cortex.txt数据的显示为例 3.图像显示 针对于中间结果或不重要的结果,显示的目的主要是说明中间过

6、程的真实性。,(六) 程序简洁的技巧,1.数据从外部读取; 2.改进算法,尽量不用循环。(节约运行时间) 3.正确运用循环(节约空间)。(后面介绍),五、程序构造,为了便于应用,MATLAB提供了一些流程控制的命令。这些命令对程序编写带来了一些方便,但是需要注意正确运用控制命令。,程序文件:命令文件、函数文件,(一)程序结构,MATLAB提供了三种控制结构 (1)顺序结构:即按照程序编写顺序执行,将许多执行语句合并在一起即可。 (2)循环结构:条件成立时反复执行程序模块,for和while实现。 (3)选择结构:先判断,后执行,if-else-end实现。,1. for循环 for循环允许一组

7、命令以固定的次数重复,它的一般形式是 for x=1:step:endcommand end for 和end之间的命令串按x的每一列执行一次,直到n次后终止。,for循环应当注意的一些方面,for循环不能使用内部重新赋值循环变量而终止; for循环内部接受任何有效的MATLAB数组; for循环可以嵌套; 只要有矩阵形式可以解决的问题,不要使用for循环。使用for循环的算法执行很慢,一个好的MATLAB算法不应当出现循环语句。tic/toc(计算时间) 循环可以使用break跳出,但只跳出所在的循环,不跳出整个嵌套结构。,例2:将cortex.txt中的数据每一列乘以其列数。,见cycle

8、1.m。,课堂练习:将cortex.txt 中的每一行加上1,如何编写程序?,2.while循环,While循环的一般形式为: while expressioncommonds end 只要表达式expression里的所有元素为真,就执行命令串commands。通常表达式求值给一个标量值,单数组值也同样有效。,例3:求满足n*(n+1)50的最大n等于多少?,clear all clc n=1; while n*(n+1)50n=n+1; end n-1,3.if-else-end结构,很多情况下,命令的序列必须根据关系的检验有条件的执行,它由if-else-end结构提供。它的结构如下:

9、if expression1commands1 elseif expression2commands2 elseif elsecommands end,(二)几个重要的控制语句,1.break 终止for ,while, if语句。,2.input 输入数据或字符串的提示。 (1)x=input(请输入) 提示输入数据 (2)x=input(请输入,s) 提示输入字符串,例4:用for循环编程求满足n*(n+1)=50break end end n-1,(三)程序设计的过程,1.设计算法。,2.设计结构。,3.填充每个模块。,4.检验(逐行、逐段检验)。,课堂练习,有7位教师阅卷,每份卷由5位

10、教师评阅,请求出每位老师的阅卷标准分,并求出每份试卷的总分,且按照总分由高到低的顺序排列。数据见原始成绩.xls,net=newff(minmax(y),4 1,tansig,purelin,trainlm); net.trainParam.goal=0.001; net.trainParam.epochs=500; net,tr=train(net,y,p); a=sim(net,y);,六、神经网络,(一) BP神经网络(命令:newff,sim),例5根据19772008年的人口数据预测我国后几年的人口。(程序见bpwangluo.m),训练效果,预测效果,(二) 径向基神经网络(命令:

11、 newrb(or newrbe),sim),例5 根据19772008年的人口数据预测我国后几年的人口。(程序见jingxjwangluo.m),newrb训练效果,newrbe预测效果,(三) 感知器神经网络(命令:newp,sim),例6癌症患者和非癌症患者的相关数据,试建立感知器神经网络进行诊断。(程序见ganzhiqi.m),训练样本线性可分,预测效果,七、优化问题,1.线性规划,调用格式 X=linprog(f,A,b) X,fval,exitflag,ouyput,lamnda=linprog(f,A,b,Aeq,Beq,LB,UB,X0,options),X是问题的解向量,f是

12、由目标函数的系数构成的向量,A是一个矩阵,b是一个向量,A,b和变量x=x1,x2,xn 一起,表示了线性规划中不等式约束条件,A,b是系数矩阵和右端向量。,X,fval,exitflag,ouyput,lamnda=linprog(f,A,b,Aeq,Beq,LB,UB,X0,options),Aeq和Beq表示了线性规划中等式约束条件中的系数矩阵和右端向量。LB和UB是约束变量的下界和上界向量,X0是给定的变量的初始值,options为控制规划过程的参数系列。返回值中fval是优化结束后得到的目标函数值。exitflag=0表示优化结果已经超过了函数的估计值或者已声明的最大迭代次数;exi

13、tflag0表示优化过程中变量收敛于解X,exitflag0表示不收敛。,X,fval,exitflag,output,lamnda=linprog(f,A,b,Aeq,Beq,LB,UB,X0,options),output有3个分量,iterations表示优化过程的迭代次数,cgiterations表示PCG迭代次数,algorithm表示优化所采用的运算规则。lambda有4个分量,ineqlin是线性不等式约束条件,eqlin是线性等式约束条件,upper是变量的上界约束条件,lower是变量的下界约束条件。它们的返回值分别表示相应的约束条件在约束条件在优化过程中是否有效。,例7某工

14、厂生产A,B两种产品,所用原料均为甲、乙、丙三种:生产一件产品所需原料和所获利润以及库存原料情况如下所示:,在该厂只有表中所列库存原料的情况下,如何安排A,B两种产品的生产数量可以获得最大利润?,程序见lp.m,特别指出:线性规划程序是以最小作为目标函数的。,2.二次规划,用MATLAB软件求解,其输入格式如下:1. x=quadprog(H,C,A,b);2. x=quadprog(H,C,A,b,Aeq,beq);3. x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB);4. x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0);5. x=q

15、uadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0, options);,例8 min f(x1,x2)=-2x1-6x2+x12-2x1x2+2x22s.t. x1+x22-x1+2x22x10, x20,写成标准形式:,s.t.,输入命令:见erciguihua.m)H=1 -1; -1 2; c=-2 ;-6;A=1 1; -1 2;b=2;2;Aeq=;beq=; VLB=0;0;VUB=;x,z=quadprog(H,c,A,b,Aeq,beq,VLB,VUB),运算结果为:x =0.6667 1.3333 z=-8.2222,3.一般非线性规划,其中X为n维变

16、元向量,G(X)与Ceq(X)均为非线性函数组成的向量,其它变量的含义与线性规划、二次规划中相同.用Matlab求解上述问题,基本步骤分三步:,1. 首先建立M文件fun.m,定义目标函数F(X): function f=fun(X); f=F(X);,3. 建立主程序.非线性规划求解的函数是fmincon,命令的基本格式如下:(1) x=fmincon(fun,X0,A,b)(2) x=fmincon(fun,X0,A,b,Aeq,beq)(3) x=fmincon(fun,X0,A,b, Aeq,beq,VLB,VUB)(4) x=fmincon(fun,X0,A,b,Aeq,beq,VLB,VUB,nonlcon)(5)x=fmincon(fun,X0,A,b,Aeq,beq,VLB,VUB,nonlcon, options) (6) x,fval= fmincon(.),

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号