预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共21页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

MATLAB编程入门 计算机程序就是计算机指令的集合,不同的编程语言,其指令与功能 是不一样的.MATLAB语言是一种面向对象的高级语言,它具有编程效率 高、易学易用的优点. MATLAB与其它大部分高级语言一样,有它自己的控制流语句.MATLAB 提供如下几种控制流结构: 一、顺序结构 二、循环结构 三、选择结构 循环: zFor循环 zWhile循环 选择: zIf-Else-End结构 zswitch-case-end结构 由于这些结构经常包含大量的MATLAB命令,故经常出现在M文件 中.MATLAB支持的控制流语句和C语言支持的控制流语句在调用格式上非 常相似. 1.For循环 For循环允许一条语句或一组语句被重复执行预先指定的次数。For 循环的一般形式是: forx=array 语句 end 如:forn=1:10 x(n)=sin(n*pi/10); end x x= 0.30900.58780.80900.95111.00000.9511 0.80900.58780.30900.0000 注意: (1)For循环不能用For循环内重新赋值循环变量n来终止; (2)在For循环内接受任何有效的MATLAB数组; (3)For循环可按需要进行循环嵌套。 如: Forn=1:5 form=1:5 A(n,m)=n^2+m^2; end end (4)当有一个等效的数组方法来解给定的问题时,应避免用For循环。 例如,上面的第一个例子可被重写为 n=1:10; x=sin(n*pi/10) x= 0.30900.58780.80900.95111.00000.9511 0.80900.58780.30900.0000 两种方法得出同样的结果,而后者执行更快,更直观,要求较少的输入。 (5)为了得到最大的速度,在For循环(While循环)被执行之前,应 预先分配数组。例如,前面所考虑的第一种情况,在For循环内每执行一 次命令,变量x的大小增加1。迫使MATLAB每通过一次循环要花费时间 对x分配更多的内存。为了消去这个步骤,For循环的例子应重写为 x=zeros(1,10); forn=1:10 x(n)=sin(n*pi/10); end 现在,只有x(n)的值需要改变。 例1相传古代印度国王要褒奖他的聪明能干的宰相达依尔(国际象 棋发明者),问他要什么?达依尔回答:“陛下只要在国际象棋棋盘的第 一个格子上放一粒麦子,第二个格子上放二粒麦子,以后每个格子的麦子 数都按前一格的两倍计算。如果陛下按此法给我64格的麦子,就感激不 尽,其他什么也不要了。”国王想:“这还不容易!”让人扛了一袋麦子, 但很快用光了,再扛出一袋还不够,请你为国王算一下共要给达依尔多少 小麦?(1小麦约颗) 解麦粒总数为 程序如下: a=1; s=0 fori=1:64 s=s+a; a=2*a; end s=s/1.4/10^8 运行后得: s= 1.3176e+011 例2公元前五世纪我国古代数学家张丘建在《算经》一书中提出了 “百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百 鸡,问鸡翁、母、雏各几何? 解设x:鸡翁数,则x的范围:0~19 y:鸡母数,则y的范围:0~33 z:鸡雏数,则z的范围:0~100 则: x+y+z=100 5x+3y+z/3=100 这是一个不定方程。 D=[]; forx=0:19 fory=0:33 forz=0:100 if(x+y+z==100)&(5*x+3*y+z/3==100) d=[d;x,y,z]; end end end end d 运行后得结果: d= 02575 41878 81181 12484 2.While循环 While循环以不定的次数重复执行一组语句。While循环的一般形式 是: while表达式1 语句1 end 只要表达式1的值为真,就执行while和end之间的语句1,否则, 就结束循环。 例3按下面的公式计算: 使误差小于给定的. 解把作为误差,程序如下: error=input('请输入误差:'); x=1; y=0; n=1; whilex>error y=y+1; x=x/n; n=n+1; end e=y 运行如下: 请输入误差:0.001 e= 2.7181 3.IF-ELSE-END结构 最简单的If-Else-End结构是: if表达式1 语句1 end 如果在表达式1中的所有元素为真(非