版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 植树节植树心得体会7篇
- 员工转岗申请书5篇
- 磁性零件有效参数的计算 编制说明
- 动力气体工程施工安全管理计划
- 患者自缢应急预案及处理流程
- 网络系统建设与运维 教案10 熟悉VRP及CLI(4课时)
- 2022年度江西省安全员之B证(项目负责人)真题练习试卷B卷附答案
- 秋冬季重点传染病防控培训课件(中小学、幼儿园)
- 2022年度江西省保险代理人考试练习题及答案
- 2022年度江西省BIM工程师之BIM工程师真题练习试卷A卷附答案
- 硬模下血肿查房课件
- 风险社会乌尔里希·贝克
- 抗震支架施工技术交底
- 公路桥梁工程施工现场常见安全隐患及整改
- 注塑报价表模版
- 人教PEP英语六年级下册Recycle教案-教学设计
- 锂电池安全管理制度
- 5000t新型干法水泥生产线回转窑工艺设计及及说明书
- 小学五年级下册劳动教育教学计划
- 老年友善医疗机构创建资料汇编(老年医学服务技术规范)
- 中国国电集团公司电测技术监督实施细则
评论
0/150
提交评论