变量与常量
变量是任何程序设计语言的基本元素之一。
Matlab 并不要求对所使用的变量进行事先声明,也不需要指定变量类型,Matlab 会自动根据所赋予变量的值或对变量所进行的操作来确定变量的类型。
在赋值过程中,如果变量已经存在,Matlab 会用新值代替旧值,并以新的变量类型代替旧的变量类型。
常量名 | 常量值 |
---|---|
i,j | 虚数单位 |
pi | 圆周率 |
inf | 无穷大 |
eps | 浮点运算相对精度 |
nargin | 输入变量数目 |
realmin | 最小的正浮点数 |
realmax | 最大的正浮点数 |
NaN | 不定值,如0/0 |
ans | 用于结果的缺省变量名 |
nargout | 输出变量数目 |
数据类型
Matlab 数据类型的最大特点是每一种类型都是以数组为基础,Matlab 事实上把每种类型的数据都作为数组来处理。
Matlab 常用的数据类型有:
numeric:数值
char:字符
logical:逻辑
cell:单元、细胞、元胞
struct:结构
数值型
数值型数据包括
整数:带符号和无符号
浮点数:单精度和双精度
在缺省(默认)状态下,Matlab 将所有的数都看作是双精度的浮点数。
使用整型变量和单精度变量可以节约内存空间
双精度数值变量
IEEE标准,64位 (占8字节),11指数位,53数值位和一个符号位
double( ) 函数的转换
整形数据
uint8,无符号8位整形数据类型,值域为0至255,常用于图像表示和处理。(节省存储空间,提高处理速度)
int8( ), int16( ), int32( ),uint16( ), uint32( )
整形数据的运算
整型数据可以参与的运算有下面两种:
相同整型数据之间的运算,结果为同类型的整数。
不同的整型数据之间不能进行运算
整型数据可以和双精度标量进行数值运算,结果为整数。在运算过程中保持浮点运算精度,最后将结果转换成整型。
整型数据不能与不是标量的双精度数组进行运算
最大整数与最小整数
可以用intmax和intmin函数来查询不同整形所能表示的最大整数和最小整数
浮点数
浮点数包括单精度(占4个字节)和双精度(占8个字节),缺省为双精度
浮点转换函数
single:将数据转换成单精度浮点数
double:将数据转换成双精度浮点数
最大浮点数和最小浮点数
可以用 realmax 和 realmin 函数来查询单精度和双精度所能表示的最大浮点数和最小浮点数。
复数
定义复数:
直接输入法:
z=3+4i
虚数与虚数单位之间不能留空格
使用complex函数
z=complex(3,4)
z=complex(3)等于complex(3,0)
字符与字符串
字符与字符串运算是各种高级语言不可缺少的部分,Matlab具有强大的字符处理能力
字符串必须用单引号括起来
str1='Matrix Laboratory'
字符串是由多个字符组成的字符行向量
str2=['M','a','t','r','i','x']
字符数组必须是方的,即每行的字符个数必须相等
str3=['M','a','t'; 'r','i','x']
字符串中的每个字符(包括空格)都是字符串的一个元素
Matlab中字符是以 ASCII 码存储的,因而区分大小写,可用 double 函数查看一个字符的 ASCII 码
字符串的生成
直接赋值
str1='Matrix';
str2='Laboratory';
str=[str1,str2]
使用 char 函数
str=char([77,97,116,108,97,98])
str=char(str1,str2)
生成一个字符数组,第一行为 str1,第二行为 str2
字符串与数值数组
字符串、字符数组与数值数组之间的转换
按 ASCII 码转换
字符数组到数值数组:double
数值数组到字符串:char
直接转换数值数组与字符数组
数值矩阵到字符数组: num2str、int2str、mat2str
字符数组到数值数组:str2num
数值数组转换为字符数组后,表面上看象一个数值数组,但此时的元素是字符而不是数字
double、char 是按 ASCII码 进行转换
num2str、int2str、mat2str、str2num
是直接进行转换
字符串的合并
水平合并
1.直接使用中括号
str1=['hello ', 'world!']
2.使用 strcat 函数
str2=strcat('hello ','world!')
使用 strcat 时,自动去除原字符串结尾处的空格
水平合并得到的是一个更长的字符串
垂直合并
1.直接使用中括号
str3=['Matrix '; 'Laboratory']
2.使用 strvcat 函数
str4=strvcat('Matrix','Laboratory')
在中括号中用分号实现垂直合并,必须保证每个字符串的长度相等,否则需用空格补齐
用 strvcat 合并,自动为较短的字符串补充空格
垂直合并得到的是一个字符数组
运行字符串
运行字符串所表示的表达式或命令: eval
字符串相关函数
strcmp | 比较字符串 |
---|---|
strcmpi | 忽略大小写比较字符串 |
upper | 转换为大写 |
blanks | 产生空字符串 |
strmatch | 查找匹配的字符串 |
strjust | 对其字符数组,包括左对其,右对齐和居中 |
strrep | 替换字符串 |
strncmp | 比较字符串的前n个字符 |
lower | 转换为小写 |
deblank | 删除字符串中的空格 |
findstr | 在一个字符串中查找另一个字符串 |
strtok | 返回字符串中第一个分割符(空格,回车和Tab键)前的部分 |
细胞数组
Matlab 从 5.0 版开始引入了一种新的数据类型 — 细胞 ( cell ),该结构可以把不同类型的数据纳入到一个变量中。
普通数组中的每个元素都必须具有相同的数据类型,而细胞则没有此要求。
细胞变量的表示方法类似于带有下标的数组,但这些下标不是用圆括号括起来,而是使用大括号
细胞数组的定义
用赋值语句直接定义
A=[1 2; 3 4]; str='Matlab';
M={1:4, A, str}; celldisp(M)
用 cell 函数预先分配存储空间,然后对细胞的每个元素逐个赋值。
cell(m,n)
相关函数
celldisp | 输出细胞变量的内容 |
---|---|
cellplot | 用图形方式显示细胞变量 |
iscell | 判别一个变量是否是细胞变量 |