第4章 MATLAB编程基础——4.2 变量

简介: 第4章 MATLAB编程基础——4.2 变量

4.2  变量


在程序中经常会定义一些变量来保存和处理数据。从本质上看,变量代表了一段可操作的内存,也可以认为变量是内存的符号化表示。

当程序中需要使用内存时,可以定义某种类型的变量。此时编辑器根据变量的数据类型分配一定大小的内存空间,程序就可以通过变量名来访问对应的内存。本节将介绍MATLAB中变量的相关知识。


4.2.1  变量的命名


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

变量名和函数名对字母的大小写敏感,因此xX是两个不同的变量;sinMATLAB定义的正弦函数,而SIN不是。

变量名必须以字母开头,其后可以是任意字母或下画线,但是不能有空格、中文或标点。例如,_xya.b均为不合法的变量名,而classNum_x是一个合法的变量名。

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

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


通过调用isvarname函数,可以验证用户指定的变量名是否为能被MATLAB接收的合法变量名。该函数返回值为10,表示合法或不合法。例如:

isvarname('_xy')
ans = 0           % 返回值为0表明该变量名不合法
isvarname('claddNum_x')
ans = 1           % 返回值为1表明该变量名合法


4.2.2  变量的类型


MATLAB将变量划分为三类:局部变量、全局变量和永久变量。

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

2)全局变量。全局变量在定义该变量的全部工作区中有效。当在一个工作区内改变该变量的值时,该变量在其余工作区内的值也将改变。

通常,全局变量的变量名用大写字母来表示,并在函数体的开头位置进行定义,其格式如下:

global X_Val


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

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

persistent a


4.2.3  MATLAB默认的特殊变量


MATLAB预定义了许多特殊变量,这些变量具有系统默认的含义,如表4-3所示。

4-3  MATLAB中的特殊变量

特殊变量

描述

ans

系统默认的用作保存运算结果的变量名

pi

圆周率

eps

机器零阈值,MATLAB中的最小值

inf

表示无穷大

NaNnan

表示不定数

ij

虚数

nargin

函数的输入参数个数

nargout

函数的输出参数个数

realmin

可用的最小正实数

realmax

可用的最大正实数

bitmax

可用的最大正整数(以双精度格式存储)

varargin

可变的函数输入参数个数

varargout

可变的函数输出参数个数

beep

使计算机发出“嘟嘟”声音


4-1:特殊变量的应用示例。

根据圆的面积计算公式S=πr 2,计算半径为6的圆的面积。在命令行窗口中输入:

S = pi * (6 ^ 2)

得到结果:

S =
  113.0973


4.2.4  关键字


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

iskeyword
ans =
  20×1 cell 数组
    {'break'     }
    {'case'      }
    {'catch'     }
    {'classdef'  }
    {'continue'  }
    {'else'      }
    {'elseif'    }
    {'end'       }
    {'for'       }
    {'function'  }
    {'global'    }
    {'if'        }
    {'otherwise' }
    {'parfor'    }
    {'persistent'}
    {'return'    }
    {'spmd'      }
    {'switch'    }
    {'try'       }
    {'while'     }

相关文章
|
2月前
|
机器学习/深度学习 算法 数据库
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
|
5月前
Matlab随机变量的数字特征(一)
Matlab随机变量的数字特征
|
4月前
EI级 | Matlab实现VMD-TCN-GRU变分模态分解结合时间卷积门控循环单元多变量光伏功率时间序列预测
EI级 | Matlab实现VMD-TCN-GRU变分模态分解结合时间卷积门控循环单元多变量光伏功率时间序列预测
EI级 | Matlab实现VMD-TCN-GRU变分模态分解结合时间卷积门控循环单元多变量光伏功率时间序列预测
Matlab|【免费】基于半不变量的概率潮流计算
Matlab|【免费】基于半不变量的概率潮流计算
|
25天前
|
计算机视觉
Matlab中的偏最小二乘法(PLS)回归模型,离群点检测和变量选择
Matlab中的偏最小二乘法(PLS)回归模型,离群点检测和变量选择
Matlab中的偏最小二乘法(PLS)回归模型,离群点检测和变量选择
|
4月前
|
存储 容器
第一章:MATLAB基础教程:变量和数据类型
第一章:MATLAB基础教程:变量和数据类型
19 0
|
5月前
|
机器学习/深度学习 算法 定位技术
基于MATLAB的随机森林(RF)回归与变量影响程度(重要性)排序
基于MATLAB的随机森林(RF)回归与变量影响程度(重要性)排序
|
5月前
|
存储 JavaScript
MATLAB实战 | 求矩阵指数、预定义变量i和j的含义以及梯形积分法
MATLAB实战 | 求矩阵指数、预定义变量i和j的含义以及梯形积分法
59 0
MATLAB实战 | 求矩阵指数、预定义变量i和j的含义以及梯形积分法
|
5月前
|
机器学习/深度学习
MATLAB 单变量函数一阶及N阶求导
MATLAB 单变量函数一阶及N阶求导
50 1
|
5月前
|
Perl
Matlab随机变量的数字特征(二)
Matlab随机变量的数字特征

热门文章

最新文章