二、MATLAB基础知识
(六)字符串
- 字符串的创建和简单操作
- 用单引号对括起来的一系列字符的组合,每个字符是一个元素,通常通过两个字节来存储
- 表2-22 字符串常见操作函数(e_two_37.m)
函数 |
说明 |
size |
查看字符串的大小 |
whos |
可以查看工作空间内的所有变量,包括字符串的详细信息 |
double,abs |
查看字符串的ASCⅡ值大小 |
char |
将字符串的ASCⅡ值转化为字符,生成字符串数组 |
disp |
显示字符串的内容 |
strvcat |
生成字符串数组,忽略输入的空字符 |
strcat |
如果字符串行数相同,水平方向连接字符串,较短的补充空格保证相等 |
deblank |
消除所提取字符串中的空格符号 |
函数 |
说明 |
int2str |
将整数数组转换为字符数组 |
num2str |
将非整数数组转换为字符数组 |
mat2str |
将输入转换为MATLAB的输入语法形式 |
fprintf |
将数值转化为ASCⅡ字符格式,输出到指定数据文件,否则输出到命令窗口中显示 |
sprintf |
和fprintf函数一样,生成一个字符串数组 |
sscanf |
和fprint的操作相反,根据格式指示符从字符串中读取数据 |
str2num |
可以实现字符串到数字的转换,但是转化效率稍低。如果字符串中包含变量名,那么不能进行转换 |
str2double |
将一个字符串转化为一个双精度数值,限制数值的范围 |
函数命令 |
输出结果 |
说明 |
sprintf(\'%.5e\',sqrt(5)) |
2.23607e+000 |
科学计数法,%.xe表示小数点后x位小数 |
sprintf(\'%.5f\',sqrt(5)) |
2.23607 |
浮点数表示,%.xf表示小数点后x位小数 |
sprintf(\'%.5g\',sqrt(5)) |
2.2361 |
e和f格式表示的数据中位数较小者,%.xg表示x位有效数字表示 |
sprintf(\'%8.5g\',sqrt(5)) |
2.2361 |
格式中,%y.xg,y表示数值格式的宽度为y位,小数点后保留x位数据,
如果小数点后的位数超过数值格式的宽度,则忽略小数点位数的显示
|
函数 |
说明 |
ischar(s) |
判断s是否是字符串,返回逻辑值true或false |
iscellstr(s) |
判断c是否是字符串单位数组,返回逻辑值true或false |
isletter(s) |
判断s是否是字母,返回逻辑值true或false |
isspace(s) |
判断s是否是空格,返回逻辑值true或false |
isstrprop(s, \'property\') |
判断s是否为给定属性,返回逻辑值true或false |
strcmp(s1,s2) |
判断两个字符串s1和s2是否相同,返回true或false |
strncmp(s1,s2,n) |
判断两个字符串s1和s2的前n个字符是否相同,返回true或false |
strncmpi(s1,s2) |
判断两个字符串是否相同(忽略大小写),返回true或false |
strncmpi(s1,s2,n) |
判断两个字符串前n个字符是否相同(忽略大小写),返回true或false |
findstr(s1,s2) |
在字符串s1中查找较短的字符串s2 |
strfind(s1,s2) |
在字符串s1中查找字符串s2 |
strjust(s1,type) |
按指定的type方式来调查字符串数组 |
strmatch(s1,s2) |
查找符合要求的字符串下标 |
正则表达式 |
说明 |
. |
查找任意单个字符,包括空格 |
[] |
查找方括号内给出的字符和数字 |
[a-zA-Z] |
查找任意的字母和字母组合,包括大小写字母,-表示范围 |
[^aeiou] |
查找除方括号内字符串的所有字符,^表示取集合的反 |
\s |
查找所有的空白字符,相当于[\t\r\n\f\v] |
\S |
查找任意非空白字符,相当于[^\t\r\n\f\v] |
\w |
查找任意的文字符号,相当于[a-z_A-Z0-9] |
\W |
查找任意的非文字符号,相当于[^a-z_A-Z0-9] |
\d |
查找任意数字,相当于[0-9] |
\D |
查找任意的非数字字符,相当于[^0-9] |
\xN或\x[N] |
查找十六进制的N字符 |
\oN或\o[N] |
查找八进制的N字符 |
\a |
警告、提示或发声字符 |
\b |
查找退格字符 |
\t |
查找横向制表符 |
\n |
查找换行符 |
\v |
查找纵向制表符 |
\f |
查找换页符 |
\r |
查找回车符号 |
\e |
查找退出符号 |
\ |
查找单个反斜杠后的字符,即查找具有特殊意义的字符 |
字符修正符 |
说明 |
? |
查找零次或一次此修正符前匹配元素的字符 |
* |
查找零次或多次此修正符前匹配元素的字符 |
+ |
查找一次或多次此修正符前匹配元素的字符 |
{n,m} |
查找n次此修正符号前匹配元素的字符,但次数不超过m次 |
逻辑操作符 |
说明 |
(p) |
符合括号内表达式的所有字符 |
p|q |
查找符合p或q表达式的字符 |
^p |
查找出现在字符串开始位置、满足表达式p的字符串 |
p$ |
查找出现在字符串末尾、满足表达式p的字符串 |
\<p |
查找出现在单词开始位置、符合表达式p的字符串 |
\>p |
查找出现在单词末尾、符合表达式p的字符串 |
标记表达式 |
说明 |
(p) |
查找符合表达式p的所有字符 |
(?:p) |
将符合表达式p的字符串组合在一起,但不保存在一个标记中 |
(?>p) |
逐个元素进行组合,但不保存在一个标记中 |
(?#A Comment) |
在表达式中插入注释 |
\N |
与表达式中的第N个标记相同 |
$N |
在一个替换字符中插入一个与第N个标记相匹配的字符串 |
(?<name>p) |
查找符合表集中表达式p的所有字符,并命名为name |
\k<name> |
与名为name的标记相匹配 |
(?(T)p) |
如果T标记已经产生,则查找符合p的字符串 |
(?(T)p|q) |
如果T标记已经产生,则查找符合p的字符串,否则查找符合q的字符串 |
-
- 3个和正则表达式相关的函数:regexp、regexpi和regexprep(e_two_39.m)
- repexp:表示使用正则表达式查找字符串
- regexpi:表示在查找时忽略大小写
- regexprep:表示用正则表达式查找并替换字符串
(七)关系和逻辑运算
关系运算符 |
说明 |
关系运算符 |
说明 |
< |
小于 |
>= |
大于或等于 |
<= |
小于或等于 |
== |
等于 |
> |
大于 |
~= |
不等于 |
逻辑运算符 |
说明 |
& |
在两个逻辑数组之间逐个元素进行逻辑与操作 |
| |
在两个逻辑数组之间逐个元素进行逻辑或操作 |
~ |
对一个逻辑数组进行取反操作 |
&& |
在标量表达式之间进行避绕式(Short circuiting)与操作 |
|| |
在标量表达式之间进行避绕式(Short circuiting)或操作 |
-
- 避绕式:标量表明在该逻辑表达式中只对标量关系才能使用。在执行逻辑判断时,如果第一表达式的逻辑结果已经可以用于确定整个式子的逻辑关系,那么后面的逻辑关系表达式中的标量表达式不再进行判断。
- 关系和逻辑函数
函数 |
说明 |
xor(x,y) |
逻辑异或函数,当x和y中一个为真,另一个为假时,函数返回true;
反之两者均为逻辑真或逻辑假时,返回false
|
any(x) |
如果x是向量,当向量中的如果有一个元素为0,返回true;
如果x是数组,对每一列,如果有一个元素为0,返回true
|
all(x) |
如果x是向量,当向量中的所有元素都为0时,返回true;
如果x是数组,对每一列,如果所有元素都为0,返回true
|
函数 |
说明 |
ispc |
检测用户的MATLAB版本是否为pc版本 |
isstudent |
检测MATLAB版本是否为学生版本 |
isunix |
检测MATLAB版本是否为unix版本 |
ismember |
检测一个值或变量是否为某个集合中的元素 |
isglobal |
检测一个变量是否为全局变量 |
mislocked |
检测M文件是否被锁定(不能被消除) |
isempty |
检测一个矩阵是否为空矩阵 |
isequal |
检测两个数组是否相等 |
isequalwitheualnans |
检测两个数组是否相等,如果存在NaN,也认为相等 |
isfinite |
检测数组中的元素是否为有限值 |
isfloatpt |
检测数组中的元素是否为浮点数 |
isscalar |
检测一个变量是否为标量 |
isinf |
检测数组中是否存在无穷大数值 |
islogical |
检测一个数组是否为逻辑数组 |
isnan |
检测一个数是否为非数值(NaN) |
isnumeric |
检测一个数组是否为数组型数组 |
isreal |
检测一个数组是否为实数数组 |
isprime |
检测一个数是否为素数 |
issorted |
检测一个数组是否按顺序排列 |
automesh |
如果输入参数是不同方向的向量,则返回true |
inpolygon |
检测一个点是否在一个多边形区域内 |
isvarname |
检测一个变量名是否为合法的变量名 |
iskeyword |
检测一个变量名是否为MATLAB关键字 |
issparse |
检测一个矩阵是否为稀疏矩阵 |
isvector |
检测一个数组是否为向量 |
isappdata |
检测应用程序定义的数据是否存在 |
ishandle |
检测是否为图形句柄 |
ishold |
检测一个图形的hold状态是否为on |
figflag |
检测一个图形是否为当前屏幕上显示的图形 |
iscellstr |
检测一个数组是否为字符串单元数组 |
ischar |
检测一个数组是否为字符串数组 |
isletter |
检测一个字符是否为英文字母 |
isspace |
检测一个字符是否为空格 |
isa |
检测一个对象是否为指定的类型 |
iscell |
检测一个数组是否为单元数组 |
isfield |
检测一个名称是否为结构体中的域 |
isjava |
检测一个数组是否为java对象数组 |
isobject |
检测一个对象是否为一个对象 |
isstruct |
检测一个名称是否为结构体 |
isvalid |
检测一个对象是否可以连接到硬件的串行端口对象 |
|