收藏 分销(赏)

matlab程序设计基础.ppt

上传人:胜**** 文档编号:800637 上传时间:2024-03-21 格式:PPT 页数:50 大小:1.87MB
下载 相关 举报
matlab程序设计基础.ppt_第1页
第1页 / 共50页
matlab程序设计基础.ppt_第2页
第2页 / 共50页
matlab程序设计基础.ppt_第3页
第3页 / 共50页
matlab程序设计基础.ppt_第4页
第4页 / 共50页
matlab程序设计基础.ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

1、和和其其他他语语言言一一样样,MATLABMATLAB的的程程序序结结构构也也不不外外三三种种:顺顺序结构、分支结构和循环结构。序结构、分支结构和循环结构。5、程序结构和流程控制5.1 顺序结构顺序结构顺序结构即指顺序往下执行的程序语句结构,其实也顺序结构即指顺序往下执行的程序语句结构,其实也就是一组复合的表达式。在就是一组复合的表达式。在MATLAB中,表达式之间可以中,表达式之间可以用分号、逗号或换行来分隔。如前例的函数文件用分号、逗号或换行来分隔。如前例的函数文件summ.m和命令文件和命令文件use.m均为顺序结构。均为顺序结构。5.2 分支结构分支结构1、MATLAB的分支结构的分支

2、结构2 2、分支结构的语句形式及实例、分支结构的语句形式及实例分支结构就是由逻辑判断决定程序执行流转方向的一分支结构就是由逻辑判断决定程序执行流转方向的一种结构。现有种结构。现有if.else.end和和switch.case.end两种形式。两种形式。第一类分支结构采用的语句形式有第一类分支结构采用的语句形式有3种:种:if 表达式表达式 语句组语句组1endif 表达式表达式 语句组语句组1else 语句组语句组2endif 表达式表达式 A 语句组语句组1elseif 表达式表达式B 语句组语句组2 else 语句组语句组3end注意:除直接应用上述三种形式外,第注意:除直接应用上述三种

3、形式外,第3 3种结构可扩展,种结构可扩展,if 还可以嵌套。还可以嵌套。举例:举例:例例5.1 5.1 输入数输入数n n,判断其奇偶性。,判断其奇偶性。程序式书写法:程序式书写法:*n=input(n=);n=input(n=);if rem(n,2)=0 if rem(n,2)=0 A=even A=even else else A=odd A=odd end end 更完善的程序式书写法:更完善的程序式书写法:n=input(n=);if isempty(n)=1 A=empty elseif rem(n,2)=0 A=even else A=odd end命令行书写法:命令行书写法:

4、n=input(n=);if isempty(n)=1 A=empty,elseif rem(n,2)=0;A=even,else,A=odd,end例例5.2 5.2 写程序,判断某一年是否闰年写程序,判断某一年是否闰年*。C语言程序:语言程序:main()int year,leap;scanf(“%d”,&year);if(year%4=0)if(year%100=0)if(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”,ye

5、ar);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 display(is a leap year)else display(is not a leap year)endswitch switch 表达式表达式case case 值值1 1语句组语句组1 1case case 值值2 2语句组语句组2 2

6、otherwise otherwise 语句组语句组n n第二类分支结构采用的语句形式如下:第二类分支结构采用的语句形式如下:注意:注意:switch后的表达式的结果值,通常为标量或字符串。后的表达式的结果值,通常为标量或字符串。举例:举例:例例5.3 5.3 用用switchswitch语句改写例语句改写例3.13.1。程序式书写法:程序式书写法:n=input(n=);switch mod(n,2)*case 1 A=奇奇 case 0 A=偶偶 otherwise A=空空 end例例5.4 5.4 给给出出一一百百分分制制成成绩绩,要要求求输输出出成成绩绩等等级级AA、BB、CC、DD

7、、EE。9090分分以以上上为为AA,80898089分分为为BB,70797079分为分为CC,60696069分为分为DD,6060分以下为分以下为EE。C语言程序:语言程序:main()int score,g;scanf(“%d”,&score);g=score/10;switch(g)case 10:case 9:printf(“An”);break;case 8:printf(“Bn”);break;case 7:printf(“Cn”);break;case 6:printf(“Dn”);break;default:printf(“En”);MATLAB程序:程序:score=in

8、put(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)endend1 1、MATLABMATLAB的循环结构的循环结构 循循环环结结构构就就是是执执行行重重复复运运算算的的一一段段程程序序。MATLABMATLAB的循环语句有的循环语句有for.endfor.end和和while.endwhile.end两种形式。两种形式。2 2、循环结构的语

9、句形式及实例、循环结构的语句形式及实例5.3 循环结构循环结构For循环结构的语句形式:循环结构的语句形式:for 变量变量=初值初值:增量增量:终值终值 语句组语句组end 注意:注意:for 还可以嵌套。还可以嵌套。举例:举例:例例5.5 5.5 列出构成列出构成HilbertHilbert矩阵的程序。矩阵的程序。clear,close allclear,close all format format rat,rat,n=input(n=),n=input(n=),for i=1:n for i=1:n for j=1:n for j=1:n h(i,j)=1/(i+j-1);h(i,j)

10、=1/(i+j-1);end end end end h h 例例5.6 5.6 求求100200100200间的全部素数间的全部素数*。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);for i=2:k if rem(m,i)=0 break,end j=i+1;if j=k+1 n=n+1;x(n)=m

11、;end endendxWhileWhile循环结构的语句形式:循环结构的语句形式: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例例5.8 5.8 用用/41-1/3+1/5-1/7+/41-1/3+1/5-1/7+公公式式求求的的近近似似值值,直直到到最最后一项的绝对值小于后一项的绝对值小于1010-6-6为止

12、。为止。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;t=s/n;endpi=4*pi匿名函数可以接受多个输入输出参数。创建匿名函数的格式:fhandle=(arglist)expr其中:“expr”通常是一个简单的MATLAB变量表达式

13、,实现函数的功能;“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文件主函数名设为一致。在一个函数内部可以定义一个或多个函数,这种定义在其他函数内部的函数被成为嵌套函数。嵌套函数的书写语法格式如下:function x=A(p1,p2)function y=B(p3)endend嵌套函数的互相调用需

14、要注意和嵌套的层次密切相关,例: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 实例1 matlab神经网络工具箱1.1 网络数据对象的建立net=newff(xm,xM,h1,hk,f1,fk);xm,xM分别为列向量(行数为变量个数),分别存储每个变量的最小值和最大值。h1,hk表示网络各层的节点数,一共有k层.f1,fk表示各层使用的传输函数,默认为tansig,即Sigmoid函数。还可使用

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

16、络误差准则,当误差小于此准则时停止训练,缺省为0。net.trainFcn:训 练 算 法。缺 省 为 trainlm,即Levenberg-Marquardt算法。还可使用traingdx,即带动量的梯度下降算法;traincgf,即共轭梯度法。其 它 可 看 matlab帮 助:help-contents-Neural Network Toobox-Network Object Reference;help(net.trainFcn)1.3 网络的训练net,tr,Y1,E=train(net,X,Y);net是函数newff建立的数据对象。X为n*m的矩阵,n为输入变量个数,m为样本数(

17、即把每个样本是一个列向量)。Y为k*m的矩阵,k为数出变量个数。tr返回训练的跟踪信息,tr.epochs为训练步数,tr.perf为各步目标函数的值。Y1和E返回网络最终的输出和误差。训练结束后可以用plotperf(tr)来绘制目标值随着训练步数变化的曲线。1.4 网络的泛化(预测)Y=sim(net,X);net是函数newff建立的数据对象。X为n*m的矩阵,n为输入变量个数,m为样本数(即把每个样本是一个行向量)。Y为k*m的矩阵,k为数出变量个数。2 例子:神经网络函数拟合(预测)试构造合适的神经网络模型拟合如下数据点,并预测x=10的值:x00.511.522.533.544.5

18、y00.430.690.740.610.360.08-0.17-0.34-0.4x55.566.577.588.599.5y-0.35-0.23-0.080.060.160.210.20.150.07-0.01matlab代码x=0:0.5:9.5;y=0,0.43,0.69,0.74,0.61,0.36,0.08,-0.17,-0.34,-0.4,-0.35,-0.23,-0.08,0.06,0.16,0.21,0.2,0.15,0.07;net=newff(0,9.5,5,1);net.trainParam.epochs=100;net.trainParam.goad=0.000001;net=train(net,x,y);x1=0:0.1:10;y1=sim(net,x1);figure;plot(x,y,.);hold on;plot(x1,y1,r);

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服