MATLAB编程基础详解

1、变量

1.1命名规则

在MATLAB中,变量不需要预先声明就可以进行赋值。变量的命名遵循以下规则:

(1)变量名和函数名对字母的大小写敏感,因此xX是两个不同的变量;

(2)变量名必须以字母开头,其后可以是任意字母或下画线,但是不能有空格、中文或标点。

(3)不能使用MATLAB的关键字作为变量名。避免使用函数名作为变量名。如果变量采用函数               名,则该函数失效,如设置变量名为“if”“end”等。

(4)变量名最多可包含63个字符,从第64个字符开始之后的字符将被忽略。为了程序可读及维护           方便,变量名一般代表一定的含义。

1.2变量类型

(1)局部变量。MATLAB中的每一个函数都有自己的局部变量,这些变量存储在该函数独立的工作区中,与其他函数的变量及主工作区中的变量分开存储。当该函数调用结束后,这些变量随之被删除,不会保存在内存中。

(2)全局变量。全局变量在定义该变量的全部工作区中有效。当在一个工作区内改变该变量的值时, 该变量在其余工作区内的值也将改变。 通常全局变量的变量名用大写字母来表示,并在函数体的开头位置进行定义,其格式如下:

       使用全局变量的目的是减少数据传递的次数。然而,使用全局变量有一定的风险,容易造成错误,这种错误源自全局变量的工作原理。

(3)永久变量。永久变量用persistent声明,只能在M文件函数中定义和使用,只允许声明它的函数存取。当声明它的函数退出时,MATLAB不会从内存中清除它。例如,声明a为永久变量

1.3特殊变量


变量名表示含义
ans系统默认的用作保存运算结果的变量名
pi圆周率
eps机器零阀值,MATLAB中的最小值
inf表示无穷大
NaN或nan表示不定数
i或j虚数
nargin函数的输入参数个数
nargout函数的输出参数个数
realmin可用的最小正实数
realmax可用的最大正实数
bitmax可用的最大正整数(以双精度格式存储)
varargin可变的函数输入参数个数
varargout可变的函数输出参数个数
beep使计算机发出“嘟嘟”声音

1.4关键字

    和其他编程语言类,关键字是MATLAB程序设计中常用到的流程控制变量,共有20个,如果用户将这些关键字作为变量 名,则MATLAB会出现错误提示。在命令行窗口中输入命令iskeyword,即可查询这20个关键字:

2、M文件的控制结构

MATLAB平台上的控制结构包括顺序结构、if-else-end分支结构、switch-case结构、try-catch结构、 for循环结构和while循环结构,这6种结构的算法及使用与其他计算机编程语言十分类似,有编程基础的朋友可以很快掌握。

2.1顺序结构

    顺序结构是MATLAB程序中最基本的结构,表示程序中的各操作是按照它们出现的先后顺序执行的。 顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算、输出三部曲的程序就是顺序结构。 在大多数情况下,顺序结构作为程序的一部分,与其他结构一起构成一个复杂的程序,如分支结构中的复合语句、循环结构中的循环体等。

2.2 if-else-end分支结构

if语句若判决条件为真,则执行命令组,否则跳过该命令组如下例:

情形1:

情形2:

2.3switch-case结构

      switch语句执行基于变量或表达式值的语句组,关键字case和otherwise用于描述语句组。只执行第一个 匹配的情形。用到switch则必须用end与之搭配。switch-case的具体语法结构如下:


说明:

(1)switch-case结构的调用格式保证了至少有一组指令组将会被执行。

(2)switch指令之后的表达式value应为一个标量或一个字符串。当表达式为标量时,比较命令为表达 式==检测值;而当表达式为字符串时,MATLAB将会调用字符串函数strcmp来进行比较,即strcmp(表达式, 检测值)。

(3)case指令之后的检测值不仅可以是一个标量或一个字符串,还可以是一个元胞数组。如果检测时是一个元胞数组,则MATLAB将会把表达式的值与元胞数组中的所有元素进行比较。如果元胞数组中有某个元素与表达式的值相等,MATLAB则认为此次比较的结果为真,从而执行与该次检测相对应的命令组。

2.4try-catch结构

try command1  %命令组1先被执行,若正确,则执行完后结束此结构catch command2  %命令组1错误时,执行命令组2end 
说明: 
(1)只有当MATLAB执行命令组1发生错误时,才执行命令组2。try-catch结构只提供两个可供选择的命令组。 
(2)当执行command1发生错误时,可调用lasterr函数查询出错的原因。如果函数lasterr的运行结果为 空字符串,则表示命令组1被成功执行了。 
(3)如果执行命令组2时又发生错误,则MATLAB将会终止该结构。

2.5循环结构

2.5.1  for循环

首先看一个例子:

for i = 1:4  for j = 1:4   if i>(5-j)        A(i,j)=0;   else        A(i,j)=i+j- 1;   end  endendA

     

(1)for指令后面的变量i称为循环变量,而for与end之间的命令commands被称为循环体。循环体被重复执行的次数是确定的,该次数由array数组的列数来确定。因此,在for循环过程中,循环变量i被依次赋值为数组array的各列,每次赋值,循环体都被执行一次(上述例子为一个循环嵌套)。

(2)for循环内部语句末尾的分号隐藏重复的打印,若commands指令中包含变量,则循环后在命令行窗口中直接输入变量A来显示变量A经过循环后的最终结果。


2.5.2 while循环

while循环 结构的具体句法形式如下:

while expression   commandsend
说明: 
(1)在while和end之间的命令组被称为循环体。MATLAB在运行while循环之前,首先检测expression 的值,若其逻辑值为真,则执行命令组;命令组第一次执行完毕后,继续检测expression的逻辑值,若其逻 辑值仍为真,则循环执行命令组,直到表达式expression的逻辑值为假时,结束while循环。 
(2)while循环和for循环的区别在于,while循环结构的循环体被执行的次数是不确定的,而for循环中 循环体被执行的次数是确定的。 
(3)一般情况下,表达式的值都是标量值,但是在MATLAB中也同样运行表达式为数组的情况。当表达式为数组且数组所有元素的逻辑值均为真时,while循环才继续执行命令组。 
(4)如果while指令后的表达式为空数组,那么MATLAB默认表达式的值为假,直接结束循环。 
(5)在if-else-end分支结构中提到的有关变量比较的注意事项,对while循环也同样适用。

3.其他指令

3.1 return指令

    通常,当被调用函数执行完成后,MATLAB会自动将控制权转回主函数或Commands窗口。但是如果在被调用函数中插入return指令,则可以强制MATLAB结束执行该函数并把控制权转出。

3.2输入函数

3.2.1 input

input指令将MATLAB的控制权暂时交给用户,用户通过键盘输入数值、字符串或表达式等,并按

Enter键将输入内容传递到工作区,同时把控制权交还给MATLAB。其常用的调用格式如下。

● Value=input('message'):将用户输入的内容赋值给变量Value(输入数值、字符串等各种形式的数据)。

● Value=input('message','s'):将用户输入的内容以字符串的形式赋值给变量Value。


3.2.2keyboard

   当执行遇到keyboard指令时,MATLAB将控制权暂时交给键盘,用户可以由键盘输入各种合法的 MATLAB指令。只有当用户输入完成,并输入return指令后,控制权才交还给MATLAB。

    input和keyboard指令的不同之处在于:keyboard指令允许输入任意多个MATLAB指令,而input指令只允 许用户输入赋值给变量的“值”,即数组、字符串或元胞数组等。

3.2.3yesinput指令

yesinput指令是一个只能输入的指令,它提供的输入值是一个默认量,并可以对输入范围进行检查,其调用格式如下。

Value=yesinput('Prompt',Default,Possib)。

说明:

(1)yesinput指令涉及用户和MATLAB之间的交互,因此无法在notebook程序中运行。

(2)Prompt为文字提示,Default为默认的设置值,Possib为可选值。

(3)当yesinput指令运行后,如果用户不输入任何值,则变量Value将接收默认值。

3.3pause指令

pause指令的功能为控制执行文件的暂停与恢复,其调用格式如下。

● pause:暂停执行文件,等待用户按任意键继续。

● pause(n):在继续执行文件之前,暂停n秒。

3.4continue与break指令

3.4.1continue指令

continue语句把控制权传给下一个在其中出现的for或while循环的迭代,忽略任何循环体中保留的语句。 在嵌套循环中,continue语句把控制权传给下一个for或while循环所嵌套的迭代。


%如果i大于2把控制权传给下一个在其中出现的forcount = 0;for i = 1:4    if (i>2)     continue;    end          count = count+1;endcount

最后count的值为2;

3.4.2break指令

   在for循环或while循环结构中,有时并不需要运行到最后一次循环用户就已经得到了所需要的结果,那 么后面的循环就变成冗余的了,消耗了运算时间并占用了内存。

break指令可进行对for循环或while循环结构的终止,通过使用break指令,可以不必等待循环的预定结束时刻,而是根据循环内部设置的终止项来判断。

若终止项满足,则可以使用break指令退出循环;若终止项始终未满足,则照常运行至循环的预定结束时刻。


%如果数组a的0元素个数大于等于3则退出循环a=[0 1 0 2 0 0 2 6 0 4 0 0 0 0 0 3];l=length(a);count = 0;for i = 1:l   if (a(i) == 0)     count = count+1;    end       if(count >= 3)         break;     endendcount

3.5error和warning指令

在编写M文件时,常用的错误或警告指令的调用格式有以下几种。

● error('message'):显示出错信息message,终止程序。

● errortrap:错误发生后,控制程序继续执行与否的开关。

● lasterr:显示MATLAB系统判断的最新出错原因,并终止程序。

● warning('message'):显示警告信息message,继续运行程序。

● lastwarn:显示MATLAB系统给出的最新警告程序,并继续运行。

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空