matlab程序设计基础_第1页
matlab程序设计基础_第2页
matlab程序设计基础_第3页
matlab程序设计基础_第4页
matlab程序设计基础_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 HaiNan University HaiNan University HaiNan University HaiNan University HaiNan University和其他语言一样,和其他语言一样,MATLAB的程序结构也不外三种:的程序结构也不外三种:顺序结构、分支结构和循环结构。顺序结构、分支结构和循环结构。5、程序结构和流程控制、程序结构和流程控制5.1 顺序结构顺序结构顺序结构即指顺序往下执行的程序语句结构,其实也顺序结构即指顺序往下执行的程序语句结构,其实也就是一组复合的表达式。在就是一组复合的表达式。在MATLAB中,表达式之间可中,表达式之间可以用分号、逗号或换行来

2、分隔。如前例的函数文件以用分号、逗号或换行来分隔。如前例的函数文件summ.m和命令文件和命令文件use.m均为顺序结构。均为顺序结构。5.2 分支结构分支结构1、MATLAB的分支结构的分支结构 HaiNan University2、分支结构的语句形式及实例、分支结构的语句形式及实例分支结构就是由逻辑判断决定程序执行流转方向的一分支结构就是由逻辑判断决定程序执行流转方向的一种结构。现有种结构。现有if.else.end和和switch.case.end两种形式。两种形式。第一类分支结构采用的语句形式有第一类分支结构采用的语句形式有3种:种:if 表达式表达式 语句组语句组1endif 表达式

3、表达式 语句组语句组1else 语句组语句组2endif 表达式表达式 A 语句组语句组1elseif 表达式表达式B 语句组语句组2 else 语句组语句组3end注意:除直接应用上述三种形式外,第注意:除直接应用上述三种形式外,第3 3种结构可扩展,种结构可扩展,if 还可以嵌套。还可以嵌套。 HaiNan University举例:举例:例例5.1 输入数输入数n,判断其奇偶性。,判断其奇偶性。程序式书写法:程序式书写法:* n=input(n=); if rem(n,2)=0 A=even else A=odd end 更完善的程序式书写法:更完善的程序式书写法: n=input(n=

4、); if isempty(n)=1 A=empty elseif rem(n,2)=0 A=even else A=odd end命令行书写法:命令行书写法: n=input(n=); if isempty(n)=1 A=empty, elseif rem(n,2)=0; A=even,else, A=odd, end HaiNan University例例5.2 写程序,判断某一年是否闰年写程序,判断某一年是否闰年*。C语言程序:语言程序:main() int year,leap; scanf(“%d”,&year); if(year%4=0) if(year%100=0) if(

5、year%400=0) leap=1; else leap=0; else leap=1; else leap=0; if(leap) printf(“%d is”,year); else printf(“%d is not”,year); printf(“a leap year.n”);MATLAB程序:程序:year=input(year=);if rem(year,4)=0 if rem(year,100)=0 if rem(year,400)=0 leap=1; else leap=0; end else leap=1; endelse leap=0; endif leap displ

6、ay(is a leap year)else display(is not a leap year)end HaiNan Universityswitch 表达式表达式case 值值1语句组语句组1case 值值2语句组语句组2otherwise 语句组语句组n第二类分支结构采用的语句形式如下:第二类分支结构采用的语句形式如下:注意:注意:switch后的表达式的结果值,通常为标量或字符串。后的表达式的结果值,通常为标量或字符串。 HaiNan University举例:举例:例例5.3 用用switch语句改写例语句改写例3.1。程序式书写法:程序式书写法: n=input(n=); swi

7、tch mod(n,2)* case 1 A=奇奇 case 0 A=偶偶 otherwise A=空空 end HaiNan University例例5.4 给出一百分制成绩,要求输出成绩等级给出一百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为分以上为A,8089分为分为B,7079分为分为C,6069分为分为D,60分以下为分以下为E。C语言程序:语言程序:main()int score,g; scanf(“%d”,&score); g=score/10; switch (g) case 10: case 9: printf(“An”); break; case 8:

8、 printf(“Bn”); break; case 7: printf(“Cn”); break; case 6: printf(“Dn”); break; default: printf(“En”); MATLAB程序:程序:score=input(score=);g=round(score/10-0.5);if g=10 display(A)else switch g case 9,display(A) case 8,display(B) case 7,display(C) case 6,display(D) otherwise display(E) endend HaiNan Univ

9、ersity1、MATLAB的循环结构的循环结构 循环结构就是执行重复运算的一段程序。循环结构就是执行重复运算的一段程序。MATLAB的循环语句有的循环语句有for.end和和while.end两种形式。两种形式。2、循环结构的语句形式及实例、循环结构的语句形式及实例5.3 循环结构循环结构For循环结构的语句形式:循环结构的语句形式:for 变量变量=初值初值:增量增量:终值终值 语句组语句组end 注意:注意:for 还可以嵌套。还可以嵌套。 HaiNan University举例:举例:例例5.5 列出构成列出构成Hilbert矩阵的程序。矩阵的程序。 clear, close all

10、format rat, n=input(n=), for i=1:n for j=1:n h(i,j)=1/(i+j-1); end end h HaiNan University例例5.6 求求100200间的全部素数间的全部素数*。C语言程序:语言程序:# includemain() int m,k,i,n=0; for(m=101;m=200;m=m+2) k=sqrt(m+1); for (i=2;i=k+1) printf(“%d”,m); n=n+1; MATLAB程序:程序:n=0;x=1:21;for m=101:2:200 k=round(sqrt(m+1)-0.5); fo

11、r i=2:k if rem(m,i)=0 break, end j=i+1; if j=k+1 n=n+1; x(n)=m; end endendx HaiNan UniversityWhile循环结构的语句形式:循环结构的语句形式:while 表达式表达式 语句组语句组end注意:注意:while 语句中的表达式通常为关系表达式或逻辑表达式。语句中的表达式通常为关系表达式或逻辑表达式。举例:举例:例例5.7 求如下级数的和:求如下级数的和:1+1/2+1/3+1/4+1/100。 s=0;n=1; while n=100 s=s+1/n; n=n+1; end,s HaiNan Unive

12、rsity例例5.8 用用/41-1/3+1/5-1/7+公式求公式求的近似值,直到最后一项的近似值,直到最后一项的绝对值小于的绝对值小于10-6为止。为止。C语言程序:语言程序:#include main( ) int s; float n,t,pi; t=1, pi=0; n=1.0; s=1; while(fabs(t)1e-6) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(“pi=%10.6fn”,pi);MATLAB程序:程序:t=1;pi=0;n=1;s=1;while abs(t)1e-6 pi=pi+t; n=n+2; s=-s;

13、t=s/n;endpi=4*pi HaiNan University匿名函数可以接受多个输入输出参数。创建匿名函数的格式: fhandle=(arglist) expr其中:“expr”通常是一个简单的MATLAB变量表达式,实现函数的功能;“arglist”是参数列表;“”是MATLAB中创建函数句柄的操作符.匿名函数实例: myfhd1=(x)(x+x.2) myfhd1(2)ans=6myfhd2=(x,y)(sin(x)+cos(y)myfhd2(pi/2,pi/6)ans=1.8660每一个M文件第一行定义的文件就是M文件主函数,一个M文件只能包含一个主函数,通常将M文件名和M文件主

14、函数名设为一致。在一个函数内部可以定义一个或多个函数,这种定义在其他函数内部的函数被成为嵌套函数。嵌套函数的书写语法格式如下:function x=A(p1,p2) function y=B(p3) endend嵌套函数的互相调用需要注意和嵌套的层次密切相关,例:function A(x,y) %外层函数A(例如主函数) B(x,y); D(y); function B(x,y) %A的嵌套函数(B的父函数为A) C(x); D(y); function C(x) %B的嵌套函数(C的父函数为B) D(x); end end HaiNan University HaiNan Universit

15、y HaiNan University HaiNan University HaiNan University HaiNan University HaiNan University HaiNan University HaiNan University HaiNan University HaiNan University HaiNan University HaiNan University HaiNan University HaiNan University HaiNan University HaiNan University HaiNan University HaiNan Uni

16、versity HaiNan University HaiNan University HaiNan University HaiNan University HaiNan University实例1 matlab神经网络工具箱 HaiNan University1.1 网络数据对象的建立net=newff(xm,xM,h1,hk,f1,fk); xm,xM分别为列向量(行数为变量个数),分别存储每个变量的最小值和最大值。 h1,hk表示网络各层的节点数, 一共有k层. f1,fk表示各层使用的传输函数,默认为tansig,即Sigmoid函数。还可使用函数purelin,即f(x)=x。 其

17、它可看matlab帮助: help newff HaiNan University1.2 网络数据对象net的属性 net.IW:来自输入层的加权矩阵。BP网络只用net.IW1,表示各个输入变量对第1层各节点的加权矩阵。 net.LW:来自中间层的加权向量。 BP网络用net.IW2,1表示第1隐层个节点向下一层个节点的加权矩阵; net.IW3,2表示第2隐层向下一层的加权矩阵 net.b:各层的偏移。Net.b1表示第1隐层个节点的偏移 HaiNan University net.trainParam.epochs:最大训练步数。不过当误差准则满足时,即使没达到此步数也停止训练。缺省为1

18、00。 net.trainParam.goad:网络误差准则,当误差小于此准则时停止训练,缺省为0。 net.trainFcn:训练算法。缺省为 trainlm,即Levenberg-Marquardt算法。还可使用traingdx,即带动量的梯度下降算法;traincgf,即共轭梯度法。 其它可看matlab帮助:help-contents- Neural Network Toobox- Network Object Reference; help(net.trainFcn) HaiNan University1.3 网络的训练net,tr,Y1,E=train(net,X,Y); net是函数newff建立的数据对象。 X为n*m的矩阵, n为输入变量个数, m为样本数(即把每个样本是一个列向量)。 Y为k*m的矩阵, k为数出变量个数。 tr返回训练的跟踪信息, tr.epochs为训练步数, tr.perf为各步目标函数的值。 Y1和E返回网络最终的输出和误差。 训练结束后可以用plotperf(tr)来绘制目标值随着训练步数变化的曲线。 HaiNan University1.4 网络的泛化(预测)Y=sim(net,X); net是函数newff建立的数据对

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论