3--Matlab 编程入门_第1页
3--Matlab 编程入门_第2页
3--Matlab 编程入门_第3页
3--Matlab 编程入门_第4页
3--Matlab 编程入门_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、数学实验Matlab 编程1脚本文件关系、逻辑运算控制结构函数文件2Matlab 编程入门 Matlab 编程简介 Matlab 作为一种广泛应用于科学计算的工具软件,不仅具有强大的数值计算、符号计算、矩阵运算能力和丰富的绘图功能,同时也具有和 C、FORTRAN 等高级语言一样进行程序设计。 在 Matlab 程序设计中,要充分利用 Matlab 数据结构的特点,提高编程效率。 利用 Matlab 的程序控制功能,可以将有关 Matlab 命令编成程序存储在一个文件中(M 文件),然后在命令窗口中运行该文件,Matlab 就会自动依次执行文件中的命令,直到全部命令执行完毕。3 用 Matla

2、b 语言编写的程序称为 M 文件。 M 文件是由若干 Matlab 命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法。事实上,Matlab 提供的内部函数以及各种工具箱,都是利用 Matlab 语言开发的 M 文件。用户也可以结合自己的工作需要,开发自己的程序或工具箱。 M 文件根据调用方式的不同可以分为两类: Script:脚本文件/命令文件 Function:函数文件 M 文件 M 文件以 .m 为扩展名。4例:A=input(Please input A: ) 数据的输入:inputA=input(提示信息) 其中 提示信息 为字符串, 该命令要求用户输入 A 的值 (可以是

3、数或字符串)数据输入 inputA=input(提示信息, s)注:此时输入的字符串不要加单引号! 如果是输入字符串,也可以使用下面的方法name=input(Whats your name? , s)例:5disp(X)输出变量 X 的值,可以是数值矩阵或字符串 B=1 2 3; 4 5 6; 7 8 9; disp(B)数据输出 disp 数据的输出:disp A=Hello,Tom !; disp(A)例:6数据输出 fprintffprintf(fid,format,variables)按指定的格式将变量的值输出到指定的文件 数据的输出:fprintf fid 为文件句柄,若缺省,则将

4、变量的值输出到屏幕上 format 用来指定数据输出时采用的格式,常见的有 %e ( 采用科学计算形式 ) %f ( 采用浮点数形式 ) %g ( 由系统自动选取上述两种格式之一) %s ( 输出字符串) format 中还可以使用一些特殊格式,如:n ( 换行 ) t ( 制表符 ) b ( 退格 ) ( 反斜杆 ) % ( 百分号 ) 7数据输出 fprintf a=Hello; b=2.4; c=100*pi; fprintf(a=%s,b=%f,c=%en,a,b,c)例: format 中的输出格式要与输出变量一一对应 可以没有输出变量 fprintf( Today is Monda

5、yn)例:8pause 程序的暂停:pausepause 或 pause(n)若想强行终止程序的运行,可以使用 Ctrl+c其中 n 是延迟时间,以秒为单位;若缺省,则将暂停程序,直到用户按任意键后继续 pause off 屏蔽程序中所有 pause 的作用 pause on 打开 pause 的作用9 在命令窗口中输入 f2cs,即可执行该 M 文件。例:编写一个脚本文件将华氏温度转化为摄氏温度脚本文件举例clear; % 清除当前工作空间中的变量f=input(Please input Fahrenheit temperature:);c=5*(f-32)/9;fprintf(The ce

6、ntigrade temperature is %gn,c); 新建一个 M 文件 f2cs.m,内容如下:脚本文件运行后,文件中所产生的所有变量都驻留在 Matlab 当前工作空间,可以用 whos 查看。10关系运算小于大于=大于等于=等于=不等于 比较大小,如果结论是 真 则返回 1 ,否则返回 0 注意 = 与 = 的区别 关系操作符能用来比较两个同样大小的数组,或用来比较一个数组和一个标量,在后一种情况,标量和数组中的每一个元素相比较,比较结果与数组大小一样。 关系运算符11例:关系运算举例 2+2=4 23 A=1 3 5; 2 0 6; B=3 1 0; 2 4 6; A=B x

7、=5 0; 4 2; x412M文件控制流13 程序控制结构有三种:顺序结构、选择结构和循环结构。任何复杂的程序都由这三种基本结构组成。 顺序结构M文件控制流 按排列顺序依次执行各条语句,直到程序的最后。 这是最简单的一种程序结构,一般涉及数据的输入输出、数据的计算或处理等。14选择结构 是根据给定的条件成立或不成立,分别执行不同的语句。Matlab 用于实现选择结构的语句有 if 语句和 switch 语句。选择结构15 单分支结构if expression (条件) statements (语句组)endif 条件语句if expression (条件) statements1(语句组1)

8、else statements2(语句组2)end 双分支结构16if expression1 (条件1) statements1(语句组1)elseif expression2 (条件2) statements2(语句组2) . . elseif expressionm (条件m) statementsm(语句组m)else statements(语句组)end 多分支结构if 条件语句17if 语句举例 数论中的一个有趣问题:任取一个正整数,如果是偶数,用 2 除,如果是奇数,用 3 乘再加 1,反复这个过程,直到所得到的数为 1。问:是否存在使该过程永不中止的整数?18while 1 n

9、=input(Please enter n(nonpositive quit):); if n1 if rem(n,2)=0 n=n/2; else n=3*n+1; end fprintf(n n=%d,n); end fprintf(n n=%d is not we need! continue . n, nt);endif 语句举例19 根据表达式的不同取值,分别执行不同的语句。switch expression (表达式) case value1 (表达式1) statement1(语句组1) case value2 (表达式2) statement2(语句组2) . . case v

10、aluem (表达式m) statementm(语句组m) otherwise statement (语句组)endswitch 语句20 Matlab 首先计算 expression 的值,然后将它依次与各个 case 指令后的检测值进行比较,当比较结果为真时,就执行相应的语句组,然后跳出 switch 结构。 switch 后面的表达式 expression 的值可以是一个标量或字符串。switch 语句 otherwise 指令可以不出现。 如果所有的比较结果都为假,则执行 otherwise 后面的语句组,然后跳出 switch 结构。21循环结构 是按照给定的条件,重复执行指定的语句

11、。Matlab 用于实现循环结构的语句有 for 语句和 while 语句循环结构22for variable=expression statement(循环体)end循环变量 表达式 expression 可以是行向量,也可以是矩阵for 循环clear;y=0; n=100;for k=1:n y=y+1/(2*k-1);end例:已知 ,当 n=100 时,求 y 的值23 循环语句可以嵌套使用while 循环while expression (条件) statement(循环体)end 不能在 for 循环体内改变循环变量的值 为了提高代码的运行效率,应尽可能提高代码的向量化程度,避免

12、 for 循环的使用 如果预先就知道循环的次数,则可以采用 for 循环;否则,如果预先无法确定循环的次数,则可以使用 while 循环。24 这个例子给出了计算 eps 的一种方法。 这里我们用大写 EPS,因此系统中 eps 的值不会被覆盖。当 EPS=eps 时,条件仍成立;而当 EPS=eps/2 时,条件为假,退出循环,所以最后应有 EPS=eps/2。num 用来记录循环次数。 计算 Matlab 中 eps 值 (exp02.m)while 循环举例num=0; EPS=1;while (1+EPS)1 EPS=EPS/2; num=num+1;end25 break 和 con

13、tinue break 语句用于终止循环的执行,即跳出最内层循环 continue 语句用于结束本次循环,进行下一次循环 break 和 continue 一般与 if 语句配合使用其它流控制语句 return return 语句用于退出正在运行的脚本或函数,通常用在函数文件中。26首先由计算机随机产生一个 1,100 之间的一个整数,然后由用户猜测所产生的这个数。根据用户猜测的情况给出不同的提示,如果猜测的数大于产生的数,则显示 High ,小于则显示 Low ,等于则显示 You won!,同时退出游戏。用户最多有 7 次机会。程序示例 猜数游戏27函数文件28function 输出形参列

14、表=函数名(输入形参列表)% 注释说明部分(可选)函数体语句(必须) 第一行为引导行,表示该 M文件是函数文件 函数名的命名规则与变量名相同 ( 必须以字母开头 ) 当输出形参多于一个时,用方括号括起来 函数必须是一个单独的 M文件 函数文件名必须与函数名一致 以百分号开始的语句为注释语句函数文件 函数文件由 function 语句引导29 函数调用的一般格式输出实参列表=函数名(输入实参列表) 函数调用时,实参的顺序应与函数定义时的形参的顺序一致。 函数可以嵌套调用,即一个函数可以被其它函数调用,甚至可以被它自身调用,此时称为递归调用。 函数所传递的参数具有可调性,Matlab 用两个永久变

15、量 nargin 和 nargout 分别记录调用该函数时的输入实参和输出实参的个数。函数调用30% 函数文件 factor.mfunction f=factor(n)if (n=1) f=1;else f=n*factor(n-1);end% main.m% 计算 s=1!+2!+3!+4!+5!%clear;s=0;for i=1:5 s=s+factor(i);endfprintf( s=%g n,s)例:利用函数的递归调用计算 n!递归函数举例31% ex4argin.mfunction out=ex4argin(a,b)if (nargin=1) out=a;elseif (narg

16、in=2) out=a*b;end参数的可调性举例% ex4argout.mfunction p,q=ex4argout(a,b)if (nargout=1) p=a+b;elseif (nargout=2) p=a+b; q=a-b;end32 函数通过输入和输出参数与其它 M 文件进行数据传递。 当函数调用完毕后,该函数文件中定义的所有局部变量都将被释放,即全部被清除。 如果在若干个 M文件中,都把某个变量定义为全局变量,则这些函数将公共使用这一变量。所有函数都可以对它进行存取和修改操作。 函数文件中的变量都是局部的,即一个函数文件中定义的变量不能被另一个函数文件或其它 M 文件使用。全局

17、变量与局部变量 定义全局变量是 M文件间传递信息的一种手段。33 变量名列表中的各个变量用空格隔开,不能用逗号!全局变量给函数间的数据传递带来了方便,但却破坏了函数对变量的封装,降低了程序的可读性,因而在结构化程序设计中,全局变量是不受欢迎的。特别是当程序较大,子程序较多时,全局变量将个程序调试和维护带来不便,故不提倡使用全局变量。global 变量名列表全局变量的定义34程序示例% ex4global.mclear; global a ba=1; b=3;y=mysquaresum(a,b);fprintf( a=%g, b=%g n,a,b);z=myproduct(a,b);fprint

18、f( a=%g, b=%gn,a,b);% mysquaresum.mfunction square_sum=mysquaresum(x,y)square_sum=x2 + y2; a=x+y;% myproduct.mfunction product=myproduct(x,y)global aproduct=x*y; a=x+y;35子函数% ex4subfun.mfunction avg, med = ex4subfun(x) % 主函数 n = length(x);avg = mean(x, n);med = median(x, n);function a = mean(x, n) % 子函数a = sum(x)/n;function m = median(x, n) % 子函数x = sort(x);if rem(n, 2) = 1 m = x(n+1)/2)

温馨提示

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

评论

0/150

提交评论