当前位置:文档之家› MATLAB教程【2】编程

MATLAB教程【2】编程


Matlab用户可以根据需要编辑自己的M文件, 它们可以像库函数一样方便的调用,从而极大 地扩展了Matlab 的能力。
对于某一类特殊问题,如创建了许多m函数文
件,则可形成新的工具箱。
这种用Matlab语言创建定义新的Matlab函数的
功能,正体现了Matlab语言强大的扩展功能。
1.函数类文件的结构:

M文件的类型是普通的文本文件,我们可以 使用系统认可的文本文件编辑器来建立M文件。 如dos下的edit,windows的记事本等。
具体的创建方法:
(1) 在matlab命令窗 口点击File 菜单 New M-file
Matlab的程序编辑器窗口
(2) 程序编好后进行存盘:点击File \ Save As 在打开的对话框中选择存盘目录,键入文件名
c=input('请输入一个字符','s'); if c>='A' & c<='Z' disp(setstr(abs(c)+1)); elseif c>='a'& c<='z' disp(setstr(abs(c)-1)); elseif c>='0'& c<='9' disp(abs(c)-abs('0')); else aaab.m disp(c); end
(2)switch语句
格式:switch 表达式(%可以是标量或字符串) case 值1 执行方式:表达式的值和哪 语句1 种情况(case)的值相同,就 case 值2 执行哪种情况中的语句,如 果不同,则执行otherwise中 语句2 的语句。格式中也可以不包 …. 括otherwise,这时如果表达 otherwise 式的值与列出的各种情况都 语句3 不相同,则继续向下执行。 end
(2).循环结构 —— 被重复执行的一组语句,循环是计算 机解决问题的主要手段。 循环语句主要有:
for — end
语法为: for 循环变量=起始值:步长:终止值 循环体 end 步长缺省值为1,可以是任意正实数或负实数。对于正数,循 环变量的值大于终止值时循环结束;对于负数,循环变量的值 小于终止值时循环结束。循环结构可以嵌套使用。 例:利用for循环求1!+2!+3!+ +5!的值 sum=0; for i=1:5 pdr=1; for k=1:i pdr=pdr*k; end bbb.m sum=sum+pdr; end sum
if
表达式1 ——— 多分支 语句1 elseif 表达式2 语句2 这种结构实现 elseif 表达式3 了一种多路选择, 语句3 比较复杂。可替代 · · 一般高级语言中的 · switch-case-end语句 else 语句n end
例:输入一个字符,若为大写字母,则输出其后继字符,若为 小写字母,则输出其前导字符,若为数字字符则输出其对应的 数值,若为其他字符则原样输出。 程序如下:
例:用while循环求1~100间整数的和 sum=0; i=1; while i<=100 sum=sum+i; i=i+1; sum = end sum 5050
(3). 分支结构—根据一定条件来执行的各条语句。 if — else — end语句有3种形式 if 表达式 执行语句 end if 表达式 ——— 是 语句1 else ———— 否 语句2 end
例:C2F.m



本节主要介绍了matlab语言程序设 计基础。matlab 编程简单,容易掌 握。 通过学习,应能编写简单程序 望你们今后能成为matlab高手!
上机作业:

x (x<1) 1.编写m函数,计算函数值 2x-1 (1<=x<10) 3x-11 (x>=10)
2.相传古代印度国王要褒奖他的聪明能干的宰相达依尔(国际象 棋发明者),问他要什么?达依尔回答:“陛下只要在国际象棋 棋盘的第一个格子上放一粒麦子,第二个格子上放二粒麦子,以 后每个格子的麦子数都按前一格的两倍计算。如果陛下按此法给 我64格的麦子,就感激不尽,其他什么也不要了。”国王想: “这还不容易!”让人扛了一袋麦子,但很快用光了,再扛出一 袋还不够,请你为国王算一下共要给达依尔多少袋小麦?(1 袋 小麦约1.4×108 颗) 3.选择计算圆的面积或球的体积
M文件有两类指令类文件(script files) 函数类文件(function files) (1). 指令类文件 — 简单的m文件 指令类文件实际上是一串指令的集合,与在命 令窗口逐行执行文件中的所有指令,其结果是 一样的。没有输入输出参数。如:mag.m
(2). 函数文件— 需要输入变量,返回输出变量

pause —— 暂停,等待用户响应 可令m文件执行暂停,并在继续执行前按任一个键 。

keyboard —— 与input类似,功能更强 keyboard 调用键盘与调用m文件一样,当keyboard在 m文件中出现时,它停止文件的执行并控制键盘,用 于修改程序。

break —— 中断
break 中断for, while循环语句的执行,在嵌套循环结 构中, break则从最内层循环退出。
例:对数表(duishubiao)和计时(jishi)
3.其它指令
input —— 将用户从键盘输入数值、字符串、表达式 赋予指定的变量。 例:n=input('How many apples= ') How many apples= 5 n= 5 disp(‘…’) —— 在屏幕上显示引号中的内容
(1)函数定义行(关键字function) function 输出变量=函数文件名(输入变量P1,P2) (2)H1行, 以(%)开头,作为lookfor指令搜索的行 (3)函数帮助文本 以(%)开头,详细说明函数的功能及有 关内容,是help查找的内容 (4)函数体语句 函数文件中的程序,包括流程控制、交互输入输出、计算、赋值、 注释,也可以调用函数文件和指令类文件。如: average.m 特定规则: 1. 函数m文件第一行必须以单词function作为引导词。 2. M文件的文件名必须是<函数名> .m。 3. 程序中的变量均为局部变量,不保存在工作 空间中。其变量只在函数运行期间有效。
(3).在指令窗键入文件名,就可以运行程序。
或在程序编辑器窗口点击Debug\Run运行
!M文件的命名规则:
2.编辑器的功能
文件名以字母打头,不要以数字开头,也不能是汉字。
3.程序调试
4.设置搜索路径
1.3.2 Matlab文件的类型
M文件的语法类似于c语言,但又有其自身特点。它 只是一个简单的ASCII码文本文件,执行程序时逐行 解释运行程序,matlab是解释性的编程语言。
例:color.m
注意:程序设计的优化 1.以矩阵或矢量运算代替循环运算
矩阵运算是Matlab的核心,因此在编程过程中应当注重 对矩阵或矢量的整体运算,减少和避免对矩阵元素的操 作。这称为矢量化编程。
2.数据的预定义
如果一段程序不能矢量化,可以预先对矢量或矩阵设定 初值,这样可以加快程序运行的效率。
while — end 循环 语法为:while 表达式 循环体 end
• 若表达式为真,则执行循环体的内容,执行后再判断表达式 是否为真,若不为真,则跳出循环体,向下继续执行。 !While循环和for循环的区别在于,while循环结构的循环体被 执行的次数不是确定的,而for结构中循环体的执行次数是确 定的。
2 .函数文件的调用
调用格式 输出变量=函数文件名(输入变量P1,P2)
注意:参数要保持与函数文件相同的顺序,同时不能多于函数文 件中的参数数目
建立一个带参数c的三变量函数 ff =-x2+y2-z2+6+c %%program test2 function ff=test2(v,c) x=v(:,1); y=v(:,2); z=v(:,3); % x,y,z看成v的三个分量 ff=-x.^2+y.^2-z.^2+6+c; 调用格式test2(v,c) 如要计算 x=1,y=0.3,z=-2,c=-4 如要计算X=[1,3,6],Y=[2 2 7],Z=[3 1 8],c=3 >>test2([1,0.3,-2],-4) 7 8],3) >> test2([1 2 3;3 2 1;6
3.局部变量和全局变量
1)通常,程序中的变量均为局部变量,这些变量独 立于其他函数的局部变量和工作空间的变量。 2)如果几个函数文件要共用一个变量,则要在这些 函数文件中都定义这个变量是全局变量。
例:global A B C
%将A、B、C三个变量定义为全局变量
1.3.流程控制
matlab语言的程序结构与其它高级语言是一致的,分 为顺序结构,循环结构,分支结构。 (1).顺序结构 —— 依次顺序执行程序的各条语句
1.3 Matlab编程
Matlab不仅是一个交互式计算工具,也是一种效率 极高的编程语言。 1.3.1 程序文件的编辑与调试
包含matlab语言代码的文件称
为M文件,其扩展名为.m。
用户如想灵活应用matlab去解
决实际问题,充分调用matlab的 科学技术资源,就需要编辑M文 件
1.编辑M文件
相关主题