第二讲 Matlab编程与作图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二讲Matlab编程与作图
第一部分Matlab程序设计初步
Matlab除了指令行操作的直接交互外,作为一种高级应用软件还提供了自己的编程语言。通过编写Matlab程序,可以更加方便地调用Matlab提供的各种功能强大的函数库,使得程序能完成复杂的运算处理大量的数值数据。
1、M文件简介
Matlab提供了丰富的编程语言,使得用户可以将一连串的命令写入文件,然后使用简单的函数来执行这些命令。文件被保存为文本文件,后缀为.m,比如说dblquad.m,因此Matlab的程序通常被称为M 文件。
M文件是一个文本文件,可以使用各种文本编辑器对它进行编辑和修改,比如Windows操作系统自带的记事本,也可以用Matlab 内建的M文件编辑器。
M文件分为两类,一类称为脚本(Scripts),类似于批处理文件,相当于将在Matlab命令窗口中执行的一系列指令放在一个文件中,当在命令窗口调用该文件名时,则按顺序执行其中的命令集。
例:编写求10!的程序。
另一类M文件称为函数(Function),它可以接受输入变量,并将运算结果送至输出变量,类似于数学中的函数y=f(x)。
函数M文件的基本结构:
function f=fact(n) 函数定义行
%Compute a factorial value.
%FACT(N) returns the factorial of N, 帮助文档%usually denoted by N!
%Put simply,FACT(N) is PROD(1:N), 注释
f=prod(1:n); 函数体2、运算符
关系运算符:<, <=, >, >=, = =, ~=
逻辑运算符:与(&),或(|),非(~)
例:编写分段函数
21
() 1 -1<1
321
x x
f x x
x x
⎧>
⎪
=≤
⎨
⎪+≤-
⎩
%myfun1.m
function y=myfun1(x)
y=(x.^2).*(x>1)+(x>-1& x<=1)+(3+2*x).*(x<=-1);
注意:1.函数名与变量名的命名法则相同,要求以字母开头,后接字母或下划线;2.函数名与保存的文件名最好一致。
3、控制流
所有的计算机编程语言都提供了控制程序流执行程序的语法,Matlab也不例外。所有的控制流语法都以end 结尾。
⑴for 循环语句
语法:for 循环变量=数组
指令组;
end
解释:对于循环变量依次取数组中的值,循环执行指令组直到循环变量遍历数组。数组最常用的形式是初值:步长:终值。 例:构造Hibert 矩阵 ⑵while 循环 语法:while 条件式 指令组; end
解释:当条件式满足,循环执行指令组直到条件式不满足。
使用while 语句要注意避免出现死循环。 例:利用迭代公式11()2k k k
a x x x +=+
精度。[Sqrt.m] ⑶分支语句
语法:if 条件表达式1 指令组1; [ elseif 条件表达式2 指令组2;] [·······] [ else 指令组k;] end
解释:如果条件表达式1满足,则执行指令组1,且结束该语句;否
则检查条件表达式2,若满足则执行指令组2,且结束该语句;······;若所有的条件都不满足,则执行指令组k,并结束该语句。
例:用条件语句编写分段函数[myfun2.m]
⑷开关语句
语法:switch 分支变量
case 值1
指令组1;
case 值2
指令组2;
··········
otherwise
指令组k;
end
解释:若分支变量的值取值1,则执行指令组1,且结束该语句,若分支变量的值取值2,则执行指令组2,且结束该语句,······若分支变量不取所列出的值,则执行指令组k。
例:关于switch 和input 的用法。[useswitch.m]
⑸其它常用指令
●input指令提示用户从键盘输入数值、字符串或表达式,并接收该输入,语法为:
user_entry=input(‘message’)
user_entry=input(‘message’,’s’)
●pause 指令使程序运行暂停,语法为
pause:暂停执行程序,等待用户按任意键继续。
pause(n):使程序暂停n秒后继续执行。
例:for n=1:4
x=-1:0.1:1;y=x.^n;plot(x,y)
pause
end
●return 指令结束return 指令所在函数的执行,返回到主调函数或者命令窗口。
●break 指令中断执行,用在循环语句内表示跳出循环。
●error(’message’)显示出错信息,终止程序执行。
例:编写用区间迭代法求函数零点的程序。[intfzero.m]
4、其它一些有用的函数
●fcnchk 函数验证函数
f=fcnchk(fun),fun可以是由字符串表示的函数表达式,(这时返回一个inline函数),也可以是函数句柄,或是函数名字符串。
f=fcnchk(fun,‘vectorized’),生成向量化函数,例如用.*代替* 举例将intfzero.m 文件中的语句f=inline(fun);换成
f=fcnchk(fun);
●nargin ,nargout 函数中输入参数或输出参数的个数。
●% 注释语句
●find 寻找数组中非零元素对应的下标。