MATLAB程序设计优秀课件
5.MATLAB 程序设计程序设计MATLAB 语言简洁高效,被称为第四代编程语言。1一、M 文件n包含 MATLAB 代码的文件称为 M 文件,扩展名为.m。2M 文件的形式M 文件有两种形式:独立的 M 文件 称命令文件命令文件(Script File)可调用 M 文件 称函数文件函数文件(Function File)31.命令文件n命令文件是一串指令的集合,没有输入输出参数。n与在命令窗口逐行执行文件中的所有指令等价。4【例】绘制“花瓣”图案%一个用来绘制花瓣(flower petal)图案的命令文件theta=-pi:0.01:pi;rho(1,:)=2*sin(5*theta).2;rho(2,:)=cos(10*theta).3;rho(3,:)=sin(theta).2;rho(4,:)=5*cos(3.5*theta).3;for i=1:4 polar(theta,rho(i,:),r)pauseend将该文本文件命名为 petal.m,并在指令窗口运行 petal,将看到下面的图案56几点说明n若用户把 petal.m 存放在 d:mywork 中,那么在运行前,应在指令窗中运行 cd d:mywork 或将其加入搜索路径n petal 运行后存放在内存中的变量,可以用 whos 看到72.函数文件n如果 M 文件的第一行包含 function,此文件就是函数文件。n函数文件区别于命令文件之处是:命令文件中的变量在执行完后保存在内存中保存在内存中 函数文件中的变量在执行完后将被清除将被清除 函数文件有输入输出参数,命令文件没有8【例】计算向量元素的平均值function y=average(x)%本函数计算向量元素的平均值本函数计算向量元素的平均值y=sum(x)/length(x);%计算过程计算过程9几点说明 第一行执行指令的作用:指明该文件是函数文件;定义函数名、输入参数和输出参数。M 文件的文件名必须是.m在 M 文件前的几行注释可供 help 命令查询。10二、程序结构nMATLAB 有顺序、循环和分支 3 种基本程序结构。n循环由 while 和 for 语句实现,分支由 if 和 switch 语句实现。11语法为:for i=表达式 (表达式为一个向量)可执行语句 end【例】:利用 for 循环求1+3+9 的值 s=0;for i=1:2:9 s=s+i;ends=251.for-end 循环12for 循环的嵌套【例】:利用 for 循环求1!+2!+3!+5!的值 s=0;for i=1:5 pdr=1;for k=1:i pdr=pdr*k;end s=s+pdr;ends=153132.while-end 循环while 循环将循环体中的语句循环执行不定次数。语法为:while 表达式 循环体语句 end l 表达式一般是由逻辑运算和关系运算以及一般 运算组成的,以判断循环的进行和停止;l 只要表达式的值非 0,继续循环;l 直到表达式值为 0,循环停止。14【例】:用 while 循环求 1100 间整数的和 s=0;i=1;while i=100 s=s+i;i=i+1;end s s=5050 153.分支结构 if else end 语句有 3 种形式:if 表达式 执行语句 end if 表达式 是 语句1 else 否 语句2 end16 if 表达式1 语句1 elseif 表达式2 语句2 elseif 表达式3 语句3 else 语句n end多分支结构17【例】:编写函数,计算函数值 x (x=1)2x-1 (1x=10)if x=10 y=3*x-11;elseif x1 y=2*x-1;else y=x;end18四、程序流控制 input 提示用户从键盘输入数值、字符串、表达式。【例】:n=input(How many apples=)How many apples=5 n=5pause 暂停,等待用户响应,并在继续执行前按任一 个键。pause(n)-暂停 n 秒。break 中断 for,while 循环语句的执行,在嵌套循环结 构中,break 从最里层循环退出。19【例】:求 100,200 之间第一个能被 21 整除的整数。for n=100:200 if rem(n,21)=0 continue end breakendn20五、函数调用在 MATLAB 中,调用函数的常用形式是:输出参数1,输出参数2,.=函数名函数名(输入参数1,输入参数2,.)注意:注意:函数调用时各参数出现的顺序,应该与函数定义时的顺序一样,否则出错。21函数调用可以嵌套,一个函数可以调用别的函数,甚至它自己,即递归调用递归调用。【例】:用递归调用形式计算 n 的阶乘function f=factor(n)%factor.m 计算 n 的阶乘if n=1 f=1;return;else f=n*factor(n-1);endfactor(5)ans=12022练习 11.利用 for 循环求 s=1 1/2+1/3-1/4+.+1/99-1/100 的值。2.生成向量 x=1:2:100,计算 sum(1./x)3.根据 求 的近似值。当 n 分别取 100、1000、10000 时,结果分别是多少?要求:分别用循环语句和向量运算(sum 函数)实现。23练习 21.根据 ,求:(1)y1e-5&n_step 500 x=x_new;x_new=a/(b+x);n_step=n_step+1;end%compare with exact valuex_newexact=(-b+sqrt(b2+4*a)/227