数值计算03-Matlab编程_第1页
数值计算03-Matlab编程_第2页
数值计算03-Matlab编程_第3页
数值计算03-Matlab编程_第4页
数值计算03-Matlab编程_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

基础编程MATLAB第三章编程基础关系与逻辑运算1数据输入与输出2函数文件3选择与循环语句4程序设计技巧简介5用Matlab语言编写的程序称为M文件。

M文件是由若干Matlab命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法。事实上,Matlab

提供的内部函数以及各种工具箱,都是利用Matlab

语言开发的M文件。用户也可以结合自己的工作需要,开发自己的程序或工具箱。

M文件根据调用方式的不同可以分为两类:

Script:脚本文件/命令文件

Function:函数文件M文件

M

文件以.m

为扩展名。

M

文件是一个文本文件,可以用任何文本编辑器来建立和编辑,通常使用Matlab

自带的M

文件编辑器。M文件的建立与打开新建一个M文件菜单操作(FileNewM-File

)命令操作

(edit

M文件名)命令按钮

(

快捷键

)打开已有的M文件菜单操作

(FileOpen

)命令操作(edit

M文件名)命令按钮

(

快捷键

)双击M

文件程序控制结构有三种:顺序结构、选择结构和循环结构。M文件控制流选择结构是根据给定的条件成立或不成立,分别执行不同的语句。Matlab

用于实现选择结构的语句有if

语句和switch

语句。关系运算<小于<=小于等于>大于>=大于等于==等于~=不等于比较大小,如果结论是真则返回1,否则返回0注意==与=

的区别关系操作符能用来比较两个同样大小的数组,或用来比较一个数组和一个标量,在后一种情况,标量和数组中的每一个元素相比较,比较结果与数组大小一样。关系运算符&与(ElementwiseAND)|或(ElementwiseOR)~

非xor(x,y)

异或逻辑运算逻辑运算符A

&

B

等价于and(A,B)A

|

B

等价于or(A,B)

~

A

等价于not(A)例:A=input('PleaseinputA:')数据的输入:inputA=input(提示信息)其中提示信息为字符串,该命令要求用户输入A

的值(可以是数或字符串)数据输入inputA=input(提示信息,'s')注:此时输入的字符串不要加单引号!如果是输入字符串,也可以使用下面的方法name=input('What''syourname?','s')例:disp(X)输出变量X的值,可以是数值矩阵或字符串>>

B=[123;456;789];>>

disp(B)数据输出disp数据的输出:disp>>

A='Hello,Tom!';>>

disp(A)例:单分支结构ifexpression

(条件)

statements(语句组)endif条件语句ifexpression(条件)

statements1(语句组1)else

statements2(语句组2)end双分支结构数据输出fprintffprintf(fid,format,variables)按指定的格式将变量的值输出到指定的文件数据的输出:fprintf

fid

为文件句柄,若缺省,则将变量的值输出到屏幕上

format

用来指定数据输出时采用的格式,常见的有%e(采用科学计算形式)%f(采用浮点数形式)%g(由系统自动选取上述两种格式之一)

%s(输出字符串)

format

中还可以使用一些特殊格式,如:\n

(换行)\t

(制表符)\b

(退格)

\\

(反斜杆)

%%

(百分号)

数据输出fprintffprintf('第%2d次迭代值为:%10.8f\n',n,x1)例:

format

中的输出格式要与输出变量一一对应function

[out1,out2,…]=函数名(in1,in2,…)%注释说明部分(可选)函数体语句(必须)

第一行为引导行,表示该M文件是函数文件函数名的命名规则与变量名相同(必须以字母开头

)当输出行参多于一个时,用方括号括起来函数必须是一个单独的M文件函数文件名必须与函数名一致以百分号开始的语句为注释语句函数文件函数文件由function

语句引导函数文件举例myfun.mfunction

[x1,x2]=myfun(a,b,c)temp=sqrt(b^2-4*a*c);x1=(-b+temp)/2/a;x2=(-b-temp)/2/a;函数调用的一般格式输出实参列表=函数名(输入实参列表)函数调用子函数functionavg=fun(x)%主函数

n=length(x);avg=mean(x,n);functiona=mean(x,n)%子函数a=sum(x)/n;M文件的编辑与路径设置进入MATLAB的Editor/Debugger窗口来编辑程序在编辑环境中,文字的不同颜色显示表明文字的不同属性。

绿色:注解;黑色:程序主体;红色:属性值的设定;蓝色:控制流程。在运行程序之前,必须设置好MATLAB的工作路径程序设计技术程序出错主要为两类:1)格式错误,如缺‘(’或‘)’等,在运行时可检测出大多数该类错误,并指出错在哪一行。2)算法错误,逻辑上的错误,不易查找,遇到此类错误时需耐心。程序控制结构有三种:顺序结构、选择结构和循环结构。任何复杂的程序都由这三种基本结构组成。

顺序结构M文件控制流按排列顺序依次执行各条语句,直到程序的最后。这是最简单的一种程序结构,一般涉及数据的输入输出、数据的计算或处理等。选择结构是根据给定的条件成立或不成立,分别执行不同的语句。Matlab

用于实现选择结构的语句有if

语句和switch

语句。选择结构ifexpression1(条件1)

statements1(语句组1)elseifexpression2(条件2)

statements2(语句组2)

......

elseifexpressionm(条件m)

statementsm(语句组m)else

statements(语句组)end多分支结构if条件语句if表达式1

语句体1elseif表达式2

语句体2

¦else

语句体nend

在执行for-end循环和while-end循环语句时,可以利用“if+break”语句中止循环运算。

当有多个条件时,若条件式1为假,则再判断elseif的条件式2,如果所有条件式都不满足,则执行else的语句体n,然后跳出if–else-end结构;当条件式为真则执行相应的语句体,否则跳过该语句体。

if–else-end结构也可以是没有elseif和else的简单结构,但if和end是不可省略且必须配对使用。编制M函数文件,实现不等长多项式的加法运算。forvariable=expression

statement(循环体)end循环变量循环结构whileexpression(条件)

statement(循环体)endfor循环【练习】一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。例:用循环求解>>s=0;fori=1:100s=s+i;end>>s=0;i=1;while(i<=100)s=s+i;i=i+1;end>>sum(1:100)ans=5050例:用循环求解求最小的m,使得>>s=0;m=0;while(s<=10000),m=m+1;s=s+m;end,[s,m]%求出的m即是所求ans=10011141

例:求>>tic,s=0;fori=1:100000,s=s+1/2^i+1/3^i;end;tocelapsed_time=1.1820>>tic,i=1:100000;s=sum(1./2.^i+1./3.^i);toc%向量化所需时间少elapsed_time=0.3010>>i=1:10;s=1./2.^i+1./3.^i,ss=sum(1./2.^i+1./3.^i)s=0.83330.36110.16200.07480.03540.01700.00830.00410.00200.0010ss=1.4990循环语句可以嵌套使用while循环whileexpression(条件)

statement(循环体)end不能在for循环体内改变循环变量的值为了提高代码的运行效率,应尽可能提高代码的向量化程度,避免

for循环的使用如果预先就知道循环的次数,则可以采用for循环;否则,如果预先无法确定循环的次数,则可以使用while循环。while循环举例【例】Fibonacci数组的元素满足Fibonacci规则:且。现要求该数组中第一个大于10000的元素。a(1)=1;a(2)=1;i=3;a(i)=a(i-1)+a(i-2);whilea(i)<=10000i=i+1; a(i)=a(i-1)+a(i-2);endi,a(i),

break

continue

break

语句用于终止循环的执行,即跳出最内层循环

continue

语句用于结束本次循环,进行下一次循环

break

和continue

一般与if

语句配合使用其它流控制语句

return

return

语句用于退出正在运行的脚本或函数,通常用在函数文件中。continue语句【例】把100到120之间的能被7整除的整数输出。fori=100:120

ifrem(i,7)~=0

continue

endiendbreak语句【例】输出100到120之间第一个能被7整除的整数fori=100:120

ifrem(i,7)~=0

continue

endibreakend例:用循环求解求最大的m,

>>s=0;fori=1:10000s=s+i;ifs>10000,break;endend>>ii=141return语句functionoutput=fact(n)ifn==1output=1;return;endoutput=n*fact(n-1);根据表达式的不同取值,分别执行不同的语句。switchexpression(表达式)

casevalue1(表达式1)

statement1(语句组1)

casevalue2(表达式2)

温馨提示

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

评论

0/150

提交评论