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

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

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

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

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

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

第4讲MATLAB程序设计 MATLAB除了如前所述的在命令窗口进行的直接交互的指令操作方式外,另外一种更为重要的工作方式就是M文件的编程工作方式。 M文件有两种形式,一种是脚本文件,另一种是函数文件。M文件的扩展名为“.m”。 M文件可以通过任何纯文本编辑器进行编辑,MATLAB中也有自带的文本编辑器,使用“edit”命令即可开启。脚本程序文件M文件和程序调试基本组成结构M文件的编辑及工作路径的设置  任何计算机语言,只要利用 顺序结构 循环结构 分支结构 就可以完成任何程序功能。在MATLAB中也有这三种基本的程序结构。 但值得注意的是,由于MATLAB语言矩阵计算功能十分强大,常常仅使用顺序结构借以矩阵的逻辑运算就可以完成计算任务。由于循环结构和分支结构在MATLAB语言中的运行速度相对较慢,因此在算法优化的编程中应当尽可能避免使用 而代之以矩阵运算,从而提高程序运行速度,简化程序代码,并使得程序代码更加接近于数学表达。 当然,采用矩阵编程的编程方法需要读者具有更多的关于线性代数和矩阵数学的知识和思维方式。 顺序结构是MATLAB中最常用的程序结构,也是执行效率最高的程序结构。顺序结构的语句是按照书写的前后顺序来执行的。 循环结构  for…end语句 利用“helpfor”或“docfor”可以获得关于该语句的使用手册。 “for…end”语句适用于循环次数确定的情况,将循环变量的初值、判别和变化放在循环开头。“for…end”语句的调用形式是:基本格式 for循环变量=起始值:步长:终止值 循环体; end例如,最简单的for…end循环: fork=1:10 x(k)=k.^2; end 事实上,采用矩阵思想也可以获得相同的结果,但编程更加简单明了: k=1:10;x=k.^2 x= 149162536496481100 绝大部分循环都可以遵从这样的方法变成向量化(矩阵化)的算法,避免采用循环语句,从而大大提高程序的执行效率。例子:〖例〗如果用户想由MATLAB求出1+2+...+100的值,可以作下列的循环:mysum=0; fori=1:1:100 mysum=mysum+i; end; mysummysum=5050在MATLAB实际编程中,for语句可以简化成fori=1:100。 或更简单地,该语句还可以写成sum(1:100)。 对于循环次数不能预先确定,而是由某个逻辑条件来控制循环次数的情况,MATLAB提供了“while…end”来实现。和“for…end”语句类似,“while…end”语句也允许嵌套。 “while…end”语句的一般形式是: whilev=表达式 语句1; … 语句n; endWhile循环和for循环的区别在于: 例如,求当整数n的阶乘值是一个50位数的第一个数时,n为多少?  n=1;%n的初值 whileprod(1:n)<1e50 n=n+1; end n n= 42Break中止循环分支结构逻辑判断及流程控制关系运算符relationaloperationsx=[2.11.71.61.51.91.81.55.11.81.42.21.61.8]; abs(x-mean(x))%mean(x)对求平均 ans= Columns1through7 0.10000.30000.40000.50000.10000.20000.5000 Columns8through13 3.10000.20000.60000.20000.40000.2000 abs(x-mean(x))<=1.5 ans= 1111111011111 x=x(abs(x-mean(x))<=1.5) x= Columns1through7 2.10001.70001.60001.50001.90001.80001.5000 Columns8through12 1.80001.40002.20001.60001.8000逻辑运算符logicaloperations “if”分支结构的一般形式是: if表达式 语句段1; else 语句段2; end “break”语句一般出现在循环体中,它表示跳出循环。1、if,else,elseif语句else和elseifA=4,B=5; (程序jiechen50b.m) n=1;%n的初值 while1%构成一个死循环 n=n+1; ifprod(1:n)>1e50,break;end%满足条件,则跳出循环 end n%显示结果 n=