第3章 MATLAB程序设计 南京信息工程大学MATLAB_第1页
第3章 MATLAB程序设计 南京信息工程大学MATLAB_第2页
第3章 MATLAB程序设计 南京信息工程大学MATLAB_第3页
第3章 MATLAB程序设计 南京信息工程大学MATLAB_第4页
第3章 MATLAB程序设计 南京信息工程大学MATLAB_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1第3章MATLAB程序设计2本章学习内容M文件的基本知识程序控制结构函数式M文件程序调试3本章学习目标掌握M文件的基本知识掌握Matlab常用的程序控制结构掌握函数式M文件的编写和调用方法掌握M文件编辑器的使用方法了解Matlab中函数参数的可调性了解Matlab程序调试方法4什么是M文件M文件的分类M文件的编辑与运行1.M文件的基本知识nextpartgogo5M文件的分类return(1)命令式M文件(ScriptFile)(2)函数式M文件(FunctionFile)examplereturn例3-1将华氏温度f转换为摄氏温度c。(教材P57)clear;%清除工作空间中的变量clc;f=input('InputFahrenheittemperature:');c=5*(f-32)/9命令式M文件ex3_1.mfunctionc=f2c(f)c=5*(f-32)/9函数式M文件f2c.m7M文件的编辑与运行return(1)M文件的编辑:Matlab文本编辑器(默认)(2)M文件的运行:命令式M文件——直接在文本编辑器中运行或以调用方式运行函数式M文件——若无输入参数,可直接运行或以调用方式运行

若有输入参数,需要以调用方式运行8顺序结构选择结构循环结构2.程序控制结构nextpartgogogo应用实例分析return顺序结构编程实例:求一元二次方程ax2+bx+c=0的根。

(教材P60例3-3)a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);[通过帮助自学]input(),disp()的用法10return选择结构(1)if语句(2)switch语句(3)try语句gogogo(1)if语句if

条件语句组endif

条件语句组1else

语句组2endif

条件1

语句组1elseif

表达式2

语句组2elseif

表达式3

语句组3elseif……else

语句组nendexamplereturnreturn%该函数用于判断某一年是否为闰年%使用格式为isleapyear(y),其中y是用户所要计算的年份functionisleapyear(year)sign=0;if

rem(year,4)==0&rem(year,100)~=0|rem(year,400)==0sign=1;end

ifsign==1

fprintf('%4dyearisaleapyear.\n',year)else

fprintf('%4dyearisnotaleapyear.\n',year)endif语句编程实例:isleapyear.mreturn(2)switch语句switch

表达式

case

值1

语句组1

case值2

语句组2

case

值3

语句组3……

otherwise

语句组nendexamplereturnswitch语句编程实例:ex_switch.mscore=input('pleaseinputyourscore:\n');switch

fix(score/10)

case

{9,10}disp('excellent.');case

8disp('good.');

case

7disp('okay.');

case

6disp('pass.');case

num2cell(5:-1:0)disp('fail.');

otherwisedisp('inputerror.');end注意写法!switch

表达式

case

值1

语句组1

case值2

语句组2

case

值3

语句组3……

otherwise

语句组nendreturn(3)try语句try

语句组1catch

语句组2endexample语义:先试探性执行语句组1,若执行过程中有错误,则将错误信息→lasterr,转而执行语句组2。returnA=[1,2,3;4,5,6];B=[7,8,9;10,11,12];tryC=A*B;catchC=A.*B;endClasterr

try语句编程实例:ex3_7.m17return循环结构(1)for语句(2)while语句(3)break语句和continue语句(4)循环的嵌套gogogo(1)for语句returnfor循环变量=初值:步长:终值循环体语句endfor

循环变量=矩阵表达式循环体语句endexampleexamplereturn例3-9当n=100时,求y的值(教材P66)y=0;n=100;fori=1:ny=y+1/(2*i-1);endyn=100;i=1:2:2*n-1;y=sum(1./i)说明:

在实际的matlab编程中,采用循环语句或降低其执行速度,所以,通常会借助矩阵来替代循环。for循环变量=初值:步长:终值循环体语句endreturns=0;a=[123136311];fork=as=s+k;endass=0;a=[123136311];s=sum(a,2)as执行过程:依次取出矩阵的第i列元素给循环变量,然后执行循环体语句。(2)while语句returnwhile

条件 循环体语句end

examplenotselected=[5,8,25,33,34,39,42,43,44,45,46,48,51,56,57,60];%未选修的学生学号fori=1:5no(i)=unidrnd(65);

whileany(no(i)==notselected) no(i)=unidrnd(65);

endend从学号1~65中任意抽取5个,不能是未选修的学号returnreturn(3)break语句和continue语句x=1:10;y=1:10;figure(1);axis([110110]);holdonfori=1:10

if(rem(i,3)==0)plot(x(i),y(i),'r*','linewidth',2)

continue

endplot(x(i),y(i),'bo','linewidth',2)pause(1)endholdoffnotselected=[5,8,25,33,34,39,42,43,44,4546,51,56,57,60];%未选修的学生学号

fori=1:5no(i)=unidrnd(65);

if(i>1)rolled=no(1:i-1);end

whileany(no(i)==notselected)|(i>1&any(no(i)==rolled))no(i)=unidrnd(65);endendno应用实例:从已选修名单中抽取5位学生学号,且不能重复抽取return253.函数式M文件函数式M文件的基本结构函数式M文件的调用函数参数的可调性全局变量与局部变量nextpartgogogo(自学)26(1)函数式M文件示例(2)函数式M文件的语法结构函数式M文件的基本结构returngogo(1)函数式M文件示例nextfunctionc=f2c(f)c=5*(f-32)/9f2c.m引导行/定义行函数体returnfunctions=sum(A,dim)%SUMSumoftheelements.%Forvectors,SUM(X)isthesumoftheelementsofX.%Formatrices,SUM(X)orSUM(X,1)isarowvectorofcolumnsums%andSUM(X,2)isacolumnvectorofrowsums.%%SeealsoPROD.

%Copyright1993-2002TheMathWorks,Inc.%$Revision:1.9$$Date:2002/04/1503:07:07$ifnargin==1&any(size(A)==1)s=sym(0);fork=1:prod(size(A))s=s+A(k);endelseifnargin==1|dim==1s=sym(zeros(1,size(A,2)));fori=1:size(A,1)s=s+A(i,:);endelses=sym(zeros(size(A,1),1));forj=1:size(A,2);s=s+A(:,j);endend注释函数体引导行functions=sum(A,dim)ifnargin==1&any(size(A)==1)s=sym(0);fork=1:prod(size(A))s=s+A(k);endelseifnargin==1|dim==1s=sym(zeros(1,size(A,2)));fori=1:size(A,1)s=s+A(i,:);endelses=sym(zeros(size(A,1),1));forj=1:size(A,2);s=s+A(:,j);endend引导行/定义行函数体%SUMSumoftheelements.%Forvectors,SUM(X)isthesumoftheelementsofX.%Formatrices,SUM(X)orSUM(X,1)isarowvectorofcolumnsums%andSUM(X,2)isacolumnvectorofrowsums.%%SeealsoPROD.

%Copyright1993-2002TheMathWorks,Inc.%$Revision:1.9$$Date:2002/04/1503:07:07$①②③sum.m(2)函数式M文件的语法结构returnfunction

输出形参表=函数名(输入形参表)注释说明部分函数体部分说明:①输入参数:若有多个,用逗号间隔②输出参数:可以没有;若有多个,参数之间用逗号间隔且输出形参表用[]括起来。③函数体中可以有return语句,也可以没有functionc=f2c(f)c=5*(f-32)/930函数式M文件的调用return[输出实参表]=函数名(输入实参表)说明:可嵌套调用,也可递归调用!examplereturnfcircle.mfunction[s,p]=fcircle(r)%CIRCLEcalculatetheareaandperimeterofacircleofradiir%r圆半径%s圆面积%p圆周长

%2009年10月15日编s=pi*r*r;p=2*pi*r;>>[area,perimeter]=fcircle(10)area=314.1593perimeter=62.831932函数参数的可调性returnMATLAB中,传递给函数的输入参数和输出参数可变。系统用预定义变量nargin和nargout分别记录调用时实际的输入参数和输出参数个数。examplereturnfunctionM=myrand10(m,n)ifnargin==0M=unidrnd(10);elseifnargin==1M=unidrnd(10,m,m);elseM=unidrnd(10,m,n);end①编写函数式文件myrand10.m②在命令窗口或其它M文件中调用>>A=myrand10;>>B=myrand10(2);>>C=myrand10(2,3);344.程序调试nextpart1.程序错误:①语法错误②逻辑错误2.程序调试方法:①通过注释,一段一段执行程序;在命令窗口输出中间结果;②通过调试菜单debug调试(自行练习)355.补充:常用的程序控制命令nextpart命令功能命令功能return返回key

温馨提示

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

评论

0/150

提交评论