信息技术 MATLAB:第3章 MATLAB程序设计_第1页
信息技术 MATLAB:第3章 MATLAB程序设计_第2页
信息技术 MATLAB:第3章 MATLAB程序设计_第3页
信息技术 MATLAB:第3章 MATLAB程序设计_第4页
信息技术 MATLAB:第3章 MATLAB程序设计_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

第3章MATLAB程序设计本章要点M文件的概念与基本操作

MATLAB程序控制结构

MATLAB函数文件

MATLAB程序调试3.1M文件的概念与基本操作一、Matlab命令的执行方式:交互式逐条输入,逐条执行,操作简单、直观,但速度慢,执行过程不能保留。程序式将命令编成程序存储在一个文件中(M文件),依次运行文件中的命令,可以重复进行。3.1M文件的概念与基本操作二、M文件及其分类1、M文件:用Matlab语言编写的程序;用于完成某些操作,或实现某种算法;其扩展名为.m2、M文件的分类:命令文件(ScriptFile)函数文件(FunctionFile)3.1M文件的概念与基本操作二、M文件及其分类3、命令文件和函数文件的区别:命令文件没有输入参数,也不返回输出参数;函数文件可以带输入参数,也可以返回输出参数。命令文件对工作空间中的变量进行操作,文件中所有命令的执行结果也返回工作空间中;函数文件中定义的变量为局部变量,当函数文件执行完毕时,这些变量也被清除。命令文件可以直接运行;函数文件不能直接运行,要以函数调用的方式来调用它。3.1M文件的概念与基本操作二、M文件及其分类4、M文件的建立(启动matlab文本编辑器):方法1:菜单:File-----New-----M-file方法2:命令窗口:edit[文件名]方法3:工具按钮:NewM-file5、M文件的打开:方法1:菜单:File-----Open-----M-file方法2:命令窗口:edit文件名方法3:工具按钮:OpenFile方法4:当前文件夹窗口:双击文件名3.1M文件的概念与基本操作二、M文件及其分类6、M文件示例:(注意比较两种文件的不同点)有变量a和b,请编程交换这两个变量的值%exam_s.m,命令文件c=a;a=b;b=c;%exam_f.m,函数文件function[a,b]=exam_f(a,b)c=a;a=b;b=c;end两种文件比较的重点:辅助变量c程序通用性,即参数可否改变可否携带返回值3.1M文件的概念与基本操作二、M文件及其分类7、练习:已知圆的半径为r,编程求其周长、面积、体积若有2个整数a和b,编程实现生成5阶元素值在[a,b]区间的均匀随机整数矩阵已定义两个字符串s1和s2,编程将s1和s2连接,并在中间插入10个*,结果存放在s3中。输入一个5阶魔方阵,输出其中不能被3或5整除的元素已知一个3位的整数,编程求出个、十、百位的值,并将其反序重新生成一整数,如368变成8633.1M文件的概念与基本操作二、M文件及其分类7、练习(参考程序):%exam1.m圆周长面积function[l,s,v]=exam1(r)l=2*pi.*r;s=pi.*r.*r;v=4/3*pi.*r.^3;end%exam2.m随机整数矩阵function[x]=exam2(a,b)x=fix(a+b*rand(5));end3.1M文件的概念与基本操作二、M文件及其分类7、练习(程序参考):%exam3.m字符串连接function[str]=exam3(a,b)s='**********';str=[a,s,b];end%exam4.m整除判断function[v]=exam4(a)v=a(~(rem(a,3)==0|rem(a,5)==0));end3.1M文件的概念与基本操作二、M文件及其分类7、练习(程序参考):%exam5.m整数翻转function[y]=exam5(x)a=fix(x/100);b=rem(fix(x/10),10);c=rem(x,10);y=c*100+b*10+a;end本章要点M文件的概念与基本操作

MATLAB程序控制结构

MATLAB函数文件

MATLAB程序调试3.2MATLAB程序控制结构任何复杂的程序都可以由以下3种基本结构构成:顺序结构选择结构循环结构

3.2MATLAB程序控制结构一、顺序结构1、执行流程:

2、控制语句:输入语句输出语句数据的计算、处理、赋值等

3.2MATLAB程序控制结构一、顺序结构2、控制语句:(1)输入语句A=input('提示信息',选项)(2)输出语句disp(输出项)

3.2MATLAB程序控制结构一、顺序结构3、程序示例:(1)编写程序实现:从键盘输入一个整数数组(0-127),输出以该整数为ASCII值的字符(2)从键盘输入一个字符串,输出该字符串的长度(3)输出1-10的平方、立方表(4)从键盘输入某个同学的姓名,输出一个问候:**你好(5)将3.1节的练习题中的输入参数改成从键盘输入

3.2MATLAB程序控制结构一、顺序结构3、程序示例(参考程序):%exam1.m数值转字符function[ch]=exam1()x=input('pleaseinputanintegerarray:');ch=char(x);disp(ch)end%exam2.m求串长function[n]=exam2()str=input('pleaseinputanstring:');n=length(str);disp(['thelengthofyourstringis',num2str(n)])end3.2MATLAB程序控制结构一、顺序结构3、程序示例(参考程序):%exam3.m平方立方表x=1:10;x=x';y=[x,x.^2,x.^3];disp('xx^2x^3')disp(y)%exam4.m问候name=input('yourname:','s');str=[name,'你好!'];disp(str)3.2MATLAB程序控制结构二、选择结构1、基本形式:单分支、双分支、多分支3.2MATLAB程序控制结构二、选择结构2、控制语句:(1)if语句(单分支)(2)if-else语句(双分支)(3)if-elseif语句(多分支)(4)switch-case语句(多分支)(5)try-catch语句(异常处理)3.2MATLAB程序控制结构二、选择结构2、控制语句:(1)if语句语句格式:if条件语句组end……执行过程:当条件成立时,则执行语句组,执行完之后继续执行if语句的后继语句,若条件不成立,则直接执行end语句的后继语句。3.2MATLAB程序控制结构%参考程序n=input('inputaninteger:');ifrem(n,2)==0str=['isanevennumber'];str=[num2str(n)str];disp(str)end思考练习:输入三个数给a、b、c,编写程序将这三个变量按由小到大排序。例:输入一整数,若该数为偶数则输出相关信息3.2MATLAB程序控制结构二、选择结构2、控制语句:(2)if-else语句语句格式:if条件语句组1else语句组2end执行过程:当条件成立时,执行语句组1,否则执行语句组2,语句组1或语句组2执行后,再执行if语句的后继语句。3.2MATLAB程序控制结构%参考程序functionexam(n)str1='isanevennumber';str2='isanoddnumber';ifrem(n,2)==0disp([num2str(n)str1])elsedisp([num2str(n)str2])endend例:判断某个整数是奇数还是偶数。3.2MATLAB程序控制结构二、选择结构2、控制语句:(2)if-else语句练习:从键盘输入两个数,输出其中较大的数从键盘输入一个数给x,判断x是否为整数从键盘输入一个数给x,判断x能否被3整除从键盘输入一个数给x,判断x是否为水仙花数从键盘输入三个数给a、b、c,判断可否构成三角形判断x是否为大、小写字符、数字字符等3.2MATLAB程序控制结构二、选择结构2、控制语句:(2)if-elseif语句语句格式:if条件1

语句组1elseif条件2

语句组2……elseif条件m

语句组melse

语句组nend3.2MATLAB程序控制结构例:编写程序将学生成绩从分数转成等级:90分以上为A80-90为B70-80为C60-70为D60以下为E%参考程序functionlevel=exam(score)ifscore>=90level='A';elseifscore>=80level='B';elseifscore>=70level='C';elseifscore>=60level='D';elselevel='E';endend3.2MATLAB程序控制结构二、选择结构2、控制语句:(4)switch-case语句语句格式:switch表达式

case表达式1

语句组1……case表达式m

语句组motherwise

语句组nend执行过程:当表达式的值等于表达式1的值时,执行语句组1……,当表达式的值等于表达式m的值时,执行语句组m当表达式的值不等于case所列的表达式的值时,执行语句组n当任意一个分支的语句执行完后,直接执行switch语句的下一句。3.2MATLAB程序控制结构例1:输入数字,输出对应的人民币大写%参考程序functionRMB=exam(rmb)switchrmbcase0RMB='零';

case1RMB='壹';

case2RMB='贰';

case3RMB='叁';

case4RMB='肆';

case

5RMB='伍';

case6RMB='陆';

case7RMB='柒';

case8RMB='捌';

case9RMB='玖';

case

10RMB='拾';endend3.2MATLAB程序控制结构%参考程序functiongrade=exam(score)switchfix(score/10)

case{0,1,2,3,4,5}grade='E';

case6grade='D';

case7grade='C';

case8grade='B';

case{9,10}grade='A';endend例2:学生成绩百分制转等级制3.2MATLAB程序控制结构二、选择结构2、控制语句:(4)switch-case语句练习:1、某商场对顾客所购买的商品实行打折,标准如下:Price<200没有折扣200<=price<5003%折扣500<=price<10005%折扣1000<=price8%折扣输入所售商品价格,求其折扣后实际价格。price=input(‘请输入商品价格:’);switchfix(price/100)

case{01}rate=0;

case{2,3,4}rate=3/100;

case{5,6,7,8,9}rate=5/100;otherwiserate=10/100;endprice=price*(1-rate)3.2MATLAB程序控制结构二、选择结构2、控制语句:(5)try-catch语句语句格式:try

语句组1catch

语句组2end执行过程:try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。3.2MATLAB程序控制结构例:矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。%参考程序functionc=exam(a,b)tryc=a*b;catchc=a.*b;end%lasterrend3.2MATLAB程序控制结构三、循环结构1、控制语句:(1)for语句(2)while语句(3)break语句和continue语句(4)循环结构的嵌套3.2MATLAB程序控制结构(1)for语句格式:for

循环变量=表达式1:表达式2:表达式3

循环体语句end说明:表达式1的值为循环变量的初值表达式2的值为步长表达式3的值为循环变量的终值步长为1时,表达式2可以省略。3.2MATLAB程序控制结构例1:求1+2+3+……+100练习1,求1+1/2+1/3+…+1/100练习2,求1+3+5+…+99练习3,求1/(1*2)+1/(2*3)+…+1/(n*(n+1))练习4,求1*2*3*…*10练习5,求1-2+3-4…-100sum=0;fori=1:100sum=sum+i;enddisp(['sum='num2str(sum)])3.2MATLAB程序控制结构例2:fibonacci数列为:f1=1,f2=1,fn=fn-1+fn-2(n>2)编程求该数列的前n项。%参考程序functionf=exam(n)f=[];f(1)=1;f(2)=1;fori=3:nf(i)=f(i-1)+f(i-2);end3.2MATLAB程序控制结构例3:输出n个星号%参考程序functionexam(n)t=[];forj=1:nt=[t,'*'];enddisp(t)3.2MATLAB程序控制结构(2)while语句格式:while(条件表达式)

循环体语句end说明:若条件表达式成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环。3.2MATLAB程序控制结构例1:用π/4≈1-1/3+1/5-1/7+…公式求π的值,直到某一项的绝对值小于1e-6functionPi=exam()sum=1;t=-1;n=3;while1/n>=1e-6sum=sum+t/n;n=n+2;t=-t;endPi=sum*4;end3.2MATLAB程序控制结构例2:输入若干个正整数,输入值为零时结束,统计其中偶数的个数x=input('Enteranumber(endin0):');n=0;whilex~=0ifrem(x,2)==0n=n+1;endx=input('inputanumber');enddisp(n);3.2MATLAB程序控制结构(3)break语句和continue语句说明:用于与循环结构相关的语句中,一般与if语句配合使用。break语句用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。continue语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。3.2MATLAB程序控制结构例1:输入若干个正整数,输入值为零时结束,统计其中偶数的个数n=0;while1x=input('Enteranumber(endin0):');ifx==0

break;

endifrem(x,2)==0n=n+1;endenddisp(n);3.2MATLAB程序控制结构例2:输入一个正整数,判断其是否为素数?functiontf=exam(x)flag=1;fori=2:x-1

ifrem(x,i)==0flag=0;

break;

endendifflag==1tf=1;elsetf=0;endend3.2MATLAB程序控制结构例3:将0~100之间不能被3整除的数输出t=[];fori=0:100

ifrem(i,3)==0

continue;

endt=[t,i];enddisp(t)3.2MATLAB程序控制结构(4)循环嵌套一个循环体内包含另一个完整的循环结构%参考程序fori=1:6t='';

forj=1:10t=[t,'*'];

enddisp(t)end例:打印以下图形************************************************************本章要点M文件的概念与基本操作

MATLAB程序控制结构

MATLAB函数文件

MATLAB程序调试3.3MATLAB函数文件函数文件由function语句引导,基本格式为Function输出参数表=函数名(输入参数表)注释说明部分函数语句End函数文件名通常由函数名加上扩展名.m组成;3.3MATLAB函数文件函数调用函数文件编制好后,可以通过调用函数的方式进行计算,函数调用的一般格式为:[输出参数表]=函数名(输入参数)在matlab中,函数可以嵌套调用,即:一个函数可以调用其它函数,甚至调用它自身,一个函数调用它自身称为函数的递归调用。3.3MATLAB函数文件例:利用函数的递归调用求n!解:n!本身就是以递归形式定义的,即:如果n<=1,则n!=1,否则,n!=n*(n-1)!。

函数文件程序如下:functionf=factor(n)ifn<=1f=1;elsef=factor(n-1)*n%递归调用end本章要点M文件的概念与基本操作

MATLAB程序控制结构

MATLAB函数文件

MATLAB程序调试3.4MATLAB程序调试一般来说,应用程序的错误有两类,一种是语法错误,一种是运行错误。语法错误:主要指词法或文法错误,如函数名的拼写错误,表达式书写错误等。Matlab能够检查出大部分语法错误。运行错误:主要指程序运行结果的错误,也称逻辑错误。Matlab无法检查逻辑错误,不会给出任何错误信息,这时可以通过程序调试的手段发现程序中的逻辑错误。3.4MATLAB程序调试程序调试最常见的方法是通过获取中间结果的方式来获得错误可能发生的程序段,以便进一步分析错误的原因:1,将程序的一些主要中间结果输出到命令窗口,从而确定错误片段。2,使用matlab的调试菜单,通过图形界面实现程序调试。3,利用命令操作方式实现程序调试。3.4MATLAB程序调试例:求1+2+…+100正确:

i=1;sum=0;whilei<=100sum=sum+i;i=i+1;

温馨提示

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

评论

0/150

提交评论