第二讲 Matlab编程与作图

第二讲 Matlab编程与作图

第一部分 Matlab程序设计初步

Matlab除了指令行操作的直接交互外,作为一种高级应用软件还提供了自己的编程语言。通过编写Matlab程序,可以更加方便地调用Matlab提供的各种功能强大的函数库,使得程序能完成复杂的运算处理大量的数值数据。 1、M文件简介

Matlab提供了丰富的编程语言,使得用户可以将一连串的命令写入文件,然后使用简单的函数来执行这些命令。文件被保存为文本文件,后缀为.m,比如说dblquad.m,因此Matlab的程序通常被称为M文件。

M文件是一个文本文件,可以使用各种文本编辑器对它进行编辑和修改,比如Windows操作系统自带的记事本,也可以用Matlab内建的M文件编辑器。

M文件分为两类,一类称为脚本(Scripts),类似于批处理文件,相当于将在Matlab命令窗口中执行的一系列指令放在一个文件中,当在命令窗口调用该文件名时,则按顺序执行其中的命令集。 例2.1:编写求10!的程序。 n=10;s=1;

for k=1:n

s=s*k;

end

disp(s) %disp:MATLAB

果,不显示变量名。

中的命令,表示只显示结

另一类M文件称为函数(Function),它可以接受输入变量,并将运算结果送至输出变量,类似于数学中的函数y=f(x)。

函数M文件的基本结构: function f=fact(n) 函数定义行 %Compute a factorial value. 计算阶乘的值

úCT(N) returns the factorial of N, 帮助文档 %usually denoted by N!

%Put simply,FACT(N) is PROD(1:N), 注释 f=prod(1:n); 函数体

?x2 x?1?例2.2:编写分段函数f(x)??1 -1

?3?2x x??1?%myfun1.m

function y=myfun1(x)

y=(x.^2).*(x>1)+(x>-1& x<=1)+(3+2*x).*(x<=-1); 注意:1.函数名与变量名的命名法则相同,要求以字母开头,后接字母或下划线;2.函数名与保存的文件名最好一致。 2、控制流

所有的计算机编程语言都提供了控制程序流执行程序的语法,Matlab也不例外。所有的控制流语法都以end 结尾。

⑴for 循环语句

语法:for 循环变量=数组 指令组; end

解释:对于循环变量依次取数组中的值,循环执行指令组直到循环变量遍历数组。数组最常用的形式是 初值:步长:终值。 例2.3:构造Hilbert矩阵

function H=hilbert(n) H=zeros(n,n); for i=1:n

for j=1:n

H(i,j)=1/(i+j-1); end

end

⑵while 循环 语法:while 条件式 指令组; end

解释:当条件式满足,循环执行指令组直到条件式不满足。

使用while 语句要注意避免出现死循环。 例2.4:利用迭代公式xk?1?(xk?定精度。[Sqrt.m]

12a)求a近似值,要求误差不超过指xk function x1=Sqrt(a,tol) % y=Sqrt(a,tol)

% 用牛顿迭代法求正数a的算术平方根 % tol为容许误差

x0=0; %初始值 x1=a/2;

while abs(x1-x0)>tol x0=x1;

x1=(x0+a/x0)/2; end

⑶分支语句

语法:if 条件表达式1 指令组1; [ elseif 条件表达式2 指令组2;] [·······] [ else 指令组k;] end

解释:如果条件表达式1满足,则执行指令组1,且结束该语句;否

则检查条件表达式2,若满足则执行指令组2,且结束该语句;······;若所有的条件都不满足,则执行指令组k,并结束该语句。 例2.5:用条件语句编写例2.2的分段函数 [myfun2.m] ⑷开关语句

语法:switch 分支变量 case 值1 指令组1; case 值2 指令组2; ·········· otherwise 指令组k; end

解释:若分支变量的值取值1,则执行指令组1,且结束该语句,若分支变量的值取值2,则执行指令组2,且结束该语句,······若分支变量不取所列出的值,则执行指令组k。 ⑸其它常用指令

● input指令 提示用户从键盘输入数值、字符串或表达式,并接收该输入,语法为:

user_entry=input(‘message’) user_entry=input(‘message’,’s’) ● pause 指令 使程序运行暂停,语法为

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4