MATLAB又称第四代编程语言,语言简洁、可读性强而且十分容易调试。它为我们用户提供了非常方便易懂的程序设计方法,类似于C编程语言。
MATLAB程序结构一般可分为顺序结构、循环结构、分支结构3种。顺序结构是指按顺序逐条执行,循环结构与分支结构都有其特定的语句,这样可以增强程序的可读性。在MATLAB中常用的程序结构包括if、switch、while和for程序结构。
如果在程序中需要根据一定条件来执行不同的操作时,可以使用条件语句,在MATLAB中提供if分支结构,或者称为if-else-end语句。
根据不同的条件情况,if分支结构有多种形式,其中最简单的用法是:如果条件表达式为真,则执行语句1,否则跳过该组命令。
if结构是一个条件分支语句,若满足表达式的条件,则往下执行;若不满足,则跳出if结构。else if 表达式2与else为可选项,这两条语句可依据具体情况取舍。
和C语言中的switch分支结构类似,在MATLAB中适用于条件多而且比较单一的情况,类似于一个数控的多个开关。其一般的语法调用方式如下:
switch 表达式
case常量表达式1
语句组1
case常量表达式2
语句组2
… … …
otherwise
语句组n
end
其中,switch后面的表达式可以是任何类型
除了分支结构之外,MATLAB还提供多个循环结构。和其他编程语言类似,循环语句一般用于有规律的重复计算。被重复执行的语句称为循环体,控制循环语句流程的语句称为循环条件。
在MATLAB中,while循环结构的语法形式如下:
while 逻辑表达式
循环语句
end
while 循环也可以嵌套,其结构如下:
while 逻辑表达式1
循环体语句1
while逻辑表达式2
循环体语句2
end
循环体语句3
end
在MATLAB中,另外一种常见的循环结构是for循环,其常用于知道循环次数的情况,其语法规则如下所示:
for ii=初值:增量:终值
语句1
………
语句n
end
ii=初值:终值,则增量为1。初值、增量、终值可正可负,可以是整数,也可以是小数,只须符合数学逻辑。
在使用MATLAB设计程序时,经常遇到提前终止循环、跳出子程序、显示错误等情况,因此需要其他的控制语句来实现上面的功能。在MATLAB中,对应的控制语句有continue、break、return等。
continue语句通常用于for或while循环体中,其作用就是终止一趟的执行,也就是说它可以跳过本趟循环中未被执行的语句,去执行下一轮的循环。下面使用一个简单的实例,说明continue命令的使用方法。
break语句也通常用于for或while循环体中,与if一同使用。当if后的表达式为真时就调用break语句,跳出当前的循环。它只终止最内层的循环。
在通常情况下,当被调用函数执行完毕后,MATLAB会自动地把控制转至主调函数或者指定窗口。如果在被调函数中插入return命令后,可以强制MATLAB结束执行该函数并把控制转出。
return命令是终止当前命令的执行,并且立即返回到上一级调用函数或等待键盘输入命令,可以用来提前结束程序的运行。
在MATLAB中,input命令的功能是将MATLAB的控制权暂时借给用户,然后,用户通过键盘输入数值、字符串或者表达式,通过按“Enter”键将输入的内容输入到工作区中,同时将控制权交换给MATLAB,其常用的调用格式如下:
user_entry=input(‘prompt’) 将用户键入的内容赋给变量user_entry
user_entry=input(‘prompt’,’s’) 将用户键入的内容作为字符串赋给变量user_entry
在MATLAB中,将keyboard命令放置到M文件中,将使程序暂停运行,等待键盘命令。通过提示符k来显示一种特殊状态,只有当用户使用return命令结束输入后,控制权才交还给程序。在M文件中使用该命令,对程序的调试和在程序运行中修改变量都会十分变量。
常用的文件操作函数列于下表中。
1.fopen 语句
其常用格式有
fid = fopen(filename):以只读方式打开名为filename的二进制文件,如果文件可以
正常打开,则获得一个文件句柄号fid;否则fid=-1。
fid = fopen(filename,permission):以permission指定的方式打开名为filename的二进制文件或文本文件,如果文件可以正常打开,则获得一个文件句柄号fid(非0 整数);否则fid =-1。
2.fclose 语句
其调用格式有
status=fclose(fid):关闭句柄号fid指定的文件。如果fid是已经打开的文件句柄号,
成功关闭,status =0;否则status=-1。
status = fclose(‘all’):关闭所有文件(标准的输入/输出和错误信息文件除外)。成功关
闭,status =0;否则status=-1。
程序调试的目的是检查程序是否正确,即程序能否顺利运行并得到预期结果。在运行程序之前,应先设想到程序运行的各种情况,测试在各种情况下程序是否能正常运行。
MATLAB提供了一系列程序调试命令,利用这些命令,可以在调试过程中设置、清除和列出断点,逐行运行M文件,在不同的工作区检查变量,用来跟踪和控制程序的运行,帮助寻找和发现错误。所有的程序调试命令都是以字母db开头的。
程序调试的目的是检查程序是否正确,即程序能否顺利运行并得到预期结果。在运行程序之前,应先设想到程序运行的各种情况,测试在各种情况下程序是否能正常运行。
1.输入错误
常见的输入错误除了在写程序时疏忽所导致的手误外,一般还有:
2.语法错误
不符合 MATLAB 语言的规定,即为语法错误。
例如在用MATLAB语句表示数学式 时,不能直接写成“k1<=x<=k2”,而应写成“k1<=x&x<=k2”。此外,输入错误也可能导致语法错误。
3.逻辑错误
在程序设计中逻辑错误也是较为常见的一类错误,这类错误往往隐蔽性较强、不易查找。产生逻辑错误的原因通常是算法设计有误,这时需要对算法进行修改。
4.运行错误
程序的运行错误通常包括不能正常运行和运行结果不正确,出错的原因一般有:
MATLAB程序调试工具只能对M文件中的语法错误和运行错误进行定位,但是无法评价该程序的性能。程序的性能包括程序的执行效率,内存使用效率,程序的稳定性、准确性及适应性。
MATLAB提供了一个性能剖析指令profile,使用它可以评价程序的性能指标,获得程序各个环节的耗时分析报告。用户可以依据该分析报告寻找程序运行效率低下的原因,以便修改程序。
MATLAB程序优化主要包括效率优化和内存优化两个部分。
在程序编写的起始阶段,用户往往将精力集中在程序的功能实现、程序的结构、准确性和可读性等方面,并没有考虑程序的执行效率问题,而是在程序不能够满足需求或者效率太低的情况下才考虑对程序的性能进行优化。因程序所解决的问题不同,程序的效率优化存在差异,这对编程人员的经验以及对函数的编写和调用有一定的要求,一些通用的程序效率优化建议如下。
依据所处理问题的需要,尽量预分配足够大的数组空间,避免在出现循环结构时增加数组空间,但是也要注意不能太大而产生不需要的数组空间,太多的大数组会影响内存的使用效率。
内存优化对于一些普通的用户而言可以不用顾及,因为随着计算机的发展,内存容量已经能够满足大多数数学运算的要求,而且MATLAB本身对计算机内存优化提供的操作支持较少,只有遇到超大规模运算时,内存优化才能起到作用。下面给出几个比较常见的内存操作函数,可以在需要时使用。
whos:查看当前内存使用状况函数。
clear:删除变量及其内存空间,可以减少程序的中间变量。
save:将某个变量以mat数据文件的形式存储到磁盘中。
load:载入mat数据到内存空间。
1.雅可比(Jacobi)迭代算法
该算法是解方程组的一个较常用的迭代算法
2.拉格朗日(Lagrange)插值函数算法
该算法用于求解插值点处的函数值。
3.图论相关算法
图论算法在计算机科学中扮演着很重要的角色,它提供了对很多问题都有效的一种简单而系统的建模方式。很多问题都可以转化为图论问题,然后用图论的基本算法加以解决。
以上就是今天学习的内容,不知不觉已经坚持打卡两周了,大家一起加油努力遇见更好的自己!