Matlab学习笔记(四)

二、MATLAB基础知识

(六)字符串

  • 字符串的创建和简单操作
    • 用单引号对括起来的一系列字符的组合,每个字符是一个元素,通常通过两个字节来存储
    • 表2-22    字符串常见操作函数(e_two_37.m
函数 说明
size 查看字符串的大小
whos 可以查看工作空间内的所有变量,包括字符串的详细信息
double,abs 查看字符串的ASCⅡ值大小
char 将字符串的ASCⅡ值转化为字符,生成字符串数组
disp 显示字符串的内容
strvcat 生成字符串数组,忽略输入的空字符
strcat 如果字符串行数相同,水平方向连接字符串,较短的补充空格保证相等
deblank 消除所提取字符串中的空格符号
    • 表2-23    数字和字符串转换函数(e_two_38.m
函数 说明
int2str 将整数数组转换为字符数组
num2str 将非整数数组转换为字符数组
mat2str 将输入转换为MATLAB的输入语法形式
fprintf 将数值转化为ASCⅡ字符格式,输出到指定数据文件,否则输出到命令窗口中显示
sprintf 和fprintf函数一样,生成一个字符串数组
sscanf 和fprint的操作相反,根据格式指示符从字符串中读取数据
str2num 可以实现字符串到数字的转换,但是转化效率稍低。如果字符串中包含变量名,那么不能进行转换
str2double 将一个字符串转化为一个双精度数值,限制数值的范围
    • 表2-24    数值数据的格式
函数命令 输出结果 说明
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位数据,

如果小数点后的位数超过数值格式的宽度,则忽略小数点位数的显示

    • 表2-25    字符串比较和判断函数
函数 说明
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) 查找符合要求的字符串下标
  • 正则表达式搜索字符串
    • 表2-26    查找单个字符串的表达式
正则表达式 说明
. 查找任意单个字符,包括空格
[] 查找方括号内给出的字符和数字
[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 查找退出符号
\ 查找单个反斜杠后的字符,即查找具有特殊意义的字符
    • 表2-27    正则表达式的字符修正符
字符修正符 说明
? 查找零次或一次此修正符前匹配元素的字符
* 查找零次或多次此修正符前匹配元素的字符
+ 查找一次或多次此修正符前匹配元素的字符
{n,m} 查找n次此修正符号前匹配元素的字符,但次数不超过m次
    • 表2-28    逻辑操作符号
逻辑操作符 说明
(p) 符合括号内表达式的所有字符
p|q 查找符合p或q表达式的字符
^p 查找出现在字符串开始位置、满足表达式p的字符串
p$ 查找出现在字符串末尾、满足表达式p的字符串
\<p 查找出现在单词开始位置、符合表达式p的字符串
\>p 查找出现在单词末尾、符合表达式p的字符串
    • 表2-29    MATLAB的标记表达式
标记表达式 说明
(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)或操作
    • 避绕式:标量表明在该逻辑表达式中只对标量关系才能使用。在执行逻辑判断时,如果第一表达式的逻辑结果已经可以用于确定整个式子的逻辑关系,那么后面的逻辑关系表达式中的标量表达式不再进行判断。
  • 关系和逻辑函数
    • 表2-32    关系和逻辑函数(e_two_42.m
函数 说明
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 检测一个对象是否可以连接到硬件的串行端口对象

posted on 2019-03-04 22:20  沐沐°  阅读(804)  评论(0编辑  收藏  举报