《-程序设计-MATLAB入门》由会员分享,可在线阅读,更多相关《-程序设计-MATLAB入门(34页珍藏版)》请在金锄头文库上搜索。
1、 MATLAB入门第三部分 程序设计一、关系运算、逻辑运算二、程序结构与控制三、M文件二、程序结构与控制语句控制语句:forend循环、whileend循环、 if-else-end、Swich语句 顺序结构(按照顺序执行命令)循环结构分支结构理论上有了以上3种结构就可以构造功能强大的 程序。由于matlab是C语言编成的,它的控制语句 也同C语言有相似之处,但是又有不同之处程序结构:1、顺序结构它是按照顺序执行命令。input disp pause(或Ctrl+C) eg1. x=input(input x,please:); y=input(input y,please:); z=x; x
2、=y; y=z; disp(x); disp(y);Eg2. x=1:50; y=reshape(x,10,5); z=y; n=input(请输入显示次数:); t=input(请输入间隔时间:); for i=1:ndisp(x=1-50) disp(z)pause(t) end(1) for循环:允许一组命令以固定的和预定的次数重复for x=arraycommandsend在for和end语句之间的命令串commands按数组(array) 中的每一列执行一次. 在每一次迭代中,x被指定为数组的下一列, 即在第n次循环中,x=array(:,n). 也可嵌套使用。2.循环结构循环是计算
3、机解决问题的主要手段,许许多多实际问题大 都包含有规律性的重复计算和对某些语句的重复执行。eg2. 1+100eg3. 1-20阶乘累加和eg4.p30 双重循环实现希尔伯特矩阵eg1. 对n=1,2,10,求xn= 的值.eg2. 1+100程序:s=0; for i=1:100s=s+i; end s法1: s=0; p=1; for i=1:20p=p*i;s=s+p; end seg3. 1-20阶乘累加和法2: s=0; for i=1:20p=1;for k=1:ip=p*k;ends=s+p; end s法3: s=0; for i=1:20s=s+prod(1:i); end
4、sEg1. for n=1:10x(n)=sin(n*pi/10); end xEg4(见p30) for i=1:3for j=1:4a(i,j)=1/(i+j-1);end end aa =1 1/2 1/3 1/4 1/2 1/3 1/4 1/5 1/3 1/4 1/5 1/6 while (expression)commandsend只要在表达式(expression)里的所有元素为真,就执行 while和end语句之间的命令串commands. 表达式一般由逻辑、关系运算以及一般的运算组成。( 2) While循环与for循环以固定次数求一组命令相反,while循环以不定的次数求一组
5、语句的值.eg2.找MATLAB软件最小 的正数(预定义的)。P30 num=0;EPS=1; while (1+EPS)1EPS=EPS/2;num=num+1; endnum EPS=2*EPSeg1: 设银行年利率为11.25%.将 10000元钱存入银行,问多长时 间会连本带利翻一番? money=10000 years=0 while money1f=x2+1 end if x1f=x(i)2+1endif x(i)20 sums=number*0.8*cost; elsesums=number*0.95*cost; end sums 循环结构中常用的两个函数命令Break,cont
6、inue一 般与if语句配合使用.Break:语句用于终止循环的执行。当在循环体内执 行到该语句时,程序将跳出循环(多层循环只跳出最 内层循环),继续执行循环语句的下一语句。 Continue:语句控制跳过循环体中的某些语句。当 在循环体内执行到该语句时,程序将跳过循环体中 所有剩下的语句,继续下一次循环。思1:求100,200之间第一个能被21整除的整数。程序1: for n=100:200if rem(n,21)=0n breakend end程序2: for n=100:200if rem(n,21)=0continueendbreak end n思2:分别用for和while循环找出1
7、00,200之间所 有的素数。I.for循环程序: II.while循环程序:思考题2程序: 3.2 switch-case-end结构if-else-end语句所对应的是多重判断选择,而有时 也会遇到多分支判断选择的问题。MATLAB语言为 解决多分支判断选择提供了switch-case语句。 swich语句是多分支选择语句,虽然在某些场合 switch功能可以由if语句的多层嵌套来完成,但是会 使程序变得复杂和难于修改维护,而利用switch语句 构造多分支选择时显得更加简单明了、容易理解。switch-case语句的一般表达形式为: switch表达式 case 选择判断值1选择判断语句
8、1 case 选择判断值2选择判断语句2 otherwise判断执行语句end程序1: N = input(输输入分数); switch Ncase 100 %得分为为100时时S =满满分;%列为为满满分等级级case 90 %得分在90和99之间间S = 优优秀; %列为为优优秀等级级case 80 %得分在80和89之间间S = 良好; %列为为良好等级级case 60 %得分在60和79之间间S = 及格; %列为为及格等级级otherwise %得分低于60。S =不及格; %列为为不及格等级级 enddisp(S)Eg1 .学生的成绩管理,用来演示switch结构的应用。 %划分区
9、域:满分(100),优秀(90-99),良好(80-89),及格(60-79),不 及格(60)。程序2: N = input(输入分数); N1=fix(N/10); switch N1case 10 %得分为100时S =满分;%列为满分等级case 9 %得分在90和99之间S = 优秀; %列为优秀等级case 8 %得分在80和89之间S = 良好; %列为良好等级case 6,7 %得分在60和79之间S = 及格; %列为及格等级otherwise %得分低于60。S =不及格; %列为不及格等级 enddisp(S) eg2: 某商场对顾 客所购买 的商品实行打折销售, 标准如
10、下(商品价格用price来表示): price200 没有折扣 200price500 3%折扣 500price1000 5%折扣 1000price2500 8%折扣 2500price5000 10%折扣 5000price 14%折扣 输入所售商品的价格,求其实际销 售价格。程序如下:price=input(请输入商品原价格为:); switch fix(price/100) case 0,1 %价格小于200 rate=0; case 2,3,4 %价格大于等于200但小于500 rate=3/100; case num2cell(5:9) %价格大于等于500但小于1000 rat
11、e=5/100; case num2cell(10:24) %价格大于等于1000但小于2500 rate=8/100; case num2cell(25:49) %价格大于等于2500但小于5000 rate=10/100; otherwise %价格大于等于5000 rate=14/100; end price=price*(1-rate) %输出商品实际销 售价格Num2cell 将元素转化为元包4. M文件所谓M文件就是由MATLAB语言编写的可在MATLAB语言 环境下运行程序源代码文件。由于目前的MATLAB软件是用C 语言编写而成。因此,M文件的语法与C语言十分相似,并且 语法简
12、单,调试容易,人机交互性强。用户可以使用任何文字 处理M文件的编写和修改。这些特点造就了matlab强大的可开 发性和可扩展性,mathwork公司推出的一系列工具箱就是明证 。用户还可以用M文件来建造和扩充属于自己的“库”。因此, 有人说:“一个不了解M文件,没有掌握M文件的matlab使用者 不能称其为一个真正的matlab用户。”M文件可以分为脚本文件(Script) (文本文件或命令式文件)和 函数文件(Function)两种。M文件不仅可以在MATLAB的程序编 辑器中编写,也可以在其他的文本编辑器中编写,并以“m”为 扩展名加以存储。matlab的.m文件保存的命名规则 :(基本遵
13、循变量命名)1.文件名命名要用英文字符,第一个字符不能是数字(下划线呢?) 2.文件名不要取为matlab的一个固有函数,m文件名的命名尽量不要是简 单的英文单词 ,最好是由大小写英文/数字/下划线等组成。原因是简单 的单词 命名容易与matlab内部函数名同名,结果会出现一些莫名其妙的 错误 。 3、文件存储路径一定为英文 4、m文件起名不能为两个单词 ,如three phase,应该 写成three_phase 或者ThreePhase4.1 脚本文件命令行简单的叠加,matlab会自动按顺序执行文件中的命令 。这样就解决了用户在命令窗中运行许多命令的麻烦,还可以 避免用户做许多重复性的工
14、作。Eg1. 输入如下一段程序 (picture.m) x=linspace(0,2*pi,20); y=sin(x); plot(x,y,r+) title(2D plot) Eg2.% 新建M-file, area.m % 计算一个球的体积 r = input(Type radius 输入半径:); Area=pi*r2; volume=(4/3)*pi*r3; fprintf(半径 The radius is %12.5fn,r) fprintf(面积 The area of a circle%12.5fn,Area) fprintf(体积 The volume of a sphere%12.5fn,volume)提醒两点:1.标点符号的运用要恰到好处。2.建立好的书写风格,保持程序的可读性。3.养成良好的注释习惯MATLAB的内部函数是有限的,有时为了研究某一个函数的各种性态, 需要为MATLAB定义新函数,为此必须编写函数文件. 它主要用以解决参数 传递和函数调用的问题。函数文件是文件名后缀为M的文件,这类文件的第 一行必须是一特殊字符function开始,格式为:function 因变量名=函数名(自变量名)函数值的获得必须通过具体的运算实现,并赋给因变量. 4. 2 函数M文件* M文件建立方法与脚本M文件一样,M文件名必须与函数名一致. * 脚本