Matlab变量、分支语句和循环语句

一、Matlab的变量

1、变量的命名

Matlab的变量名由数字、字母和下划线组成,但是只能由字母开头。大小写敏感,最大长度为63个字符,不能使用Matlab的关键字作为变量名,应当避免使用函数名作为变量名,如果变量名采用函数名,则该函数失效。

Matlab提供了isvarname函数来验证用户指定的变量名是否为Matlab接受的合法变量名。该函数返回1或0,分别代表合法或者不合法。

>> isvarname('_var')

ans =

     0

>> isvarname('var_123')

ans =

     1

2、变量的类型

Matlab中的变量共分为三类:局部变量、全局变量和永久变量。

局部变量不用多说,和其他的编程语言是同样的含义,局部变量存储在函数的工作空间中,当函数调用结束之后,局部变量随之被删除。

全局变量在整个Matlab的工作空间中都有效。当在一个工作空间中改变该值的时候,该变量在其余空间内的值也将被改变。全局变量的声明格式如下:

>> global X_val
>> X_val=3;
>> X_val

X_val =

     3

永久变量可以用persistent声明,只能在M文件函数中定义和使用;改变了只允许声明它的函数才能使用的规则。当声明它的函数退出时,永久变量继续保存在内存中。

persistent a

3、特殊变量和关键字

特殊变量是指Matlab预定义的具有默认意义的变量,如下表:

变量含义变量含义
ans用作结果的缺省变量名beep使得计算机发出“嘟嘟”声
pi圆周率eps机器零阈值,浮点精度限(2.2204*10^-16),MATLAB中的最小数
inf表示无穷大,如1/0NaN表示不定数,即结果不能确定,例如0/0
j或i虚数nargin函数的输入参数个数
nargout函数的输出参数个数Realmin可用的最小正实数
realmax可用的最大正实数bitmax可用的最大正整数(以双精度格式存储)
varargin可变函数的输入参数个数varargout可变函数的输出参数个数

Matlab中有20个关键字,可以使用iskeyword命令来查看。

>> reshape(iskeyword,5,4)

ans = 

    'break'       'else'        'global'        'return'
    'case'        'elseif'      'if'            'spmd'  
    'catch'       'end'         'otherwise'     'switch'
    'classdef'    'for'         'parfor'        'try'   
    'continue'    'function'    'persistent'    'while'

二、分支结构

Matlab中可用的分支结构有三种,分别是if-else-end结构、switch-case结构和try-catch结构。

1、if-else-end结构

(1)如果可选择的执行命令组只有一组,则调用下面的结构:

if expression
   commands
end

(2)如果可选择的执行命令组有两组,则调用下面的结构

if expression
   commands1 %如果条件为真则执行commands1
else
   commands2 %如果条件为假则执行commands2
end

(3)如果可选择的执行命令组有n(n>2)组,则调用下面的结构

if expression1
   commands1 %如果条件expression1为真则执行commands1
elseif expression2
   commands2 %如果条件expression2为真则执行commands2
...
else
   commandsn %如果前面的所有条件都不满足就执行最后一条
end

2、switch-case结构

switch value              %value为要进行判断的标量或字符串
     case test1
           commands1      %如果value的值等于test1,执行commands1
     case test2           %如果value的值等于test2,执行commands2
           commands2
     ...
otherwise
           commandsn      %如果所有的条件都不满足就执行这条命令
end

注意:case后的检测值不仅可以是一个标量值或一个字符串,还可以是一个元胞数组,如果检测是一个元胞数组,则Matlab将value与元胞数组中的每一个元素都进行比较,如果有一个元素相等就认为匹配成功,从而执行该次检测相对应的命令组。

3、try-catch结构

try
      command1 %命令组command1首先被执行,若正确,则catch下的命令组将不会被执行
catch
      command2 %如果command1命令组执行出错了,那么该命令组将会被执行
end

如果在catch下的command2的命令组的执行过程也出错了,那么Matlab将停止运行。try-catch结构在程序调试场合非常有用。

三、循环结构

1、for循环

例如求解1+2+3+….+99+100的和

>> sum=0;
>> for i=1:100
sum=sum+i;
end
>> sum

sum =

        5050

实际上for后边的i是一个数组,for循环每执行一次,i就取矩阵中的下一个值,例如:

>> for i=[1,3,5]
sum=sum+i;
end
>> sum

sum =

     9

2、while循环

我们还是求上边的那个1——100的和,使用while循环。

>> sum=0;
>> i=1;
>> while i<=100
sum=sum+i;
i=i+1;
end
>> sum

sum =

        5050

while循环和for循环的区别就是,while循环事先不知道要循环多少次,而for循环是按照之前设置好的次数来循环的。

四、其他常用控制命令

1、input和keyboard命令

input命令将Matlab的控制权暂时交给用户,等待用户通过键盘输入数值、字符串或表达式等并经回车键将输入内容传递到工作空间后,收回控制权。

常用格式如下:

value = input('message')
value = input('message','s')

命令中的message是将显示在屏幕上的字符串,对于第一种调用格式,可以输入字符串、数值等各种各样的数据。但是第二种格式的,无论输入什么内容都当做字符串处理。

keyboard命令将控制权交给键盘,用户可以由键盘输入各种合法的matlab命令,只有当用户输入完成,并键入return命令后,才收回控制权。

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

2、pause命令

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

pause %暂停执行文件,等待用户按任意键继续
pause(n) %在继续执行文件之前,暂停n秒

3、lasterr和lastwarn命令

lasterr命令可以显示matlab系统判断的最新出错原因。
lastwarn命令可以显示matlab系统给出的最新警告程序并继续运行。

  • 12
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值