matlab字符串表示方法,MATLAB字符和字符串
3.字符和字符串
在MATLAB中,几个字符(Character)可以构一个字符串(String)。一个字符串被视为一个行向量,而字符串中的每一个字符(含空格符),则是以其ASCII的形式存放于此向量的每一个元素中,只是它的外显形式仍然是可读的字符。字符串类型在数据的可视化、应用程序的交互方面有着非常重要的作用。
3.1 创建字符串
1.一般字符串的创建
在MATLAB中,所有的字符串都用两个单引号括起来,进行输入赋值。如在MATLAB命令窗口中输入:
>> a='matlab'
a =
matlab
字符串的每个字符(空格也是字符)都是相应矩阵的一个元素,上述变量a是1×6阶的矩阵,可以用size(a)命令查得:
>> size(a)
ans =
1 6 % 1行6列
2.中文字符串的创建
中文也可以作为字符串的内容。但需要注意的是:在中文字符串的输入过程中,两边的单引号必须是英文状态的单引号。例如:
>> A='中文字符串输入演示'
A =
中文字符串输入演示
3.字符串的寻访
在MATLAB中,字符串的寻访可以通过其坐标来实现。在一个字符串中,MATLAB按照从左至右的顺序对字符串中的字符依次编号(1,2,3,…)。进行字符串的寻访,只需要像寻访一般矩阵那样即可。例如在前面创建了中文字符串A之后可以得到:
>> A(3:5)
ans =
字符串
4.字符串数组的创建
二维字符串(数组)的建立也非常简单。可以像数值数组的建立那样直接输入,也可以使用str2mat等函数建立。
【例3-6】 多行串数组的直接输入示例。
>> clear
>> S=['This string array '
'has multiple rows.']
S =
This string array
has multiple rows.
>> size(S)
ans =
2 18
需要注意的是:在直接输入多行字符串数组的时候,每一行的字符个数必须相同。
【例3-7】 使用函数str2mat创建多行串数组示例。
>> a=str2mat('这','字符','串数组','','由5 行组成')
a =
这
字符
串数组
由5 行组成
>> size(a)
ans =
5 6
在使用函数str2mat创建字符串数组的时候,不用担心每一行的字符个数是否相等,函数在运行中会以字符最多的一行为准,而将其他行中的字符以空格补齐。
3.2 字符串比较
在MATLAB中,有多种对字符串进行比较的功能:
(1)比较两个字符串或者子串是否相等;
(2)比较字符串中的单个字符是否相等;
(3)对字符串内的元素分类,判断每个元素是否是字符或者空格。
用户可以使用下面4个函数中的任意一个,来判断两个输入字符串是否相等。
(1)strcmp:判断两个字符串是否相等。
(2)strncmp:判断两个字符串的前n个字符是否相等。
(3)strcmpi和strncmpi:这两个函数的作用分别与strcmp和strncmp相同,只是在比较的过程中忽略了字母大小写。
考虑有这两个字符串:
>>str1 = 'hello';
>>str2 = 'help';
字符串str1和str2并不相等,所以使用strcmp函数来判断的话,将会返回逻辑0(false)。例如:
>>C = strcmp(str1,str2)
C =
0
由于字符串str1和str2的前3个字符相等,所以用strncmp函数来比较前3个以内字符,将会返回逻辑1(true)。例如:
>>C = strncmp(str1, str2, 2) % 比较前两个字符
C =
1
下面介绍如何对大小写不同的情况进行比较。
>> str3 = 'Hello';
>> D = strncmp(str1, str3,2) % 对大小写敏感
D =
0
>> F = strncmpi(str1, str3,2) % 对大小写不敏感
F =
1
用户可以使用关系运算符进行字符串的比较,只要比较的数组具有相同的尺寸,或者其中一个是标量即可。例如,可以使用(==)运算符来判断两个字符串中有哪些字符相等。
>>A = 'fate';
>>B = 'cake';
>>A == B
ans =
0 1 0 1
所有的关系运算符都可以用来比较字符串相对应位置上的字符。
3.3 字符串查找与替换
MATLAB提供了很多函数供用户进行字符串的查找与替换。更加强大的是,MATLAB也支持在字符串的查找与替换中使用正则表达式。通过灵活使用正则表达式,可以对字符串进行各种形式的查找与替换。至于正则表达式的应用,用户可以查询帮助文档中的Regular Expressions部分。
【例3-8】 使用strrep函数进行字符串查找替换示例。
考虑有这样一个标签:
>> label = 'Sample 1, 03/28/15'
label =
Sample 1, 03/28/15
函数strrep用于实现一般的查找与替换功能。本例中使用strrep函数,将日期从"03/28"替换为"03/30"。命令如下:
>> newlabel = strrep(label, '28', '30')
newlabel =
Sample 1, 03/30/15
【例3-9】 使用findstr函数进行字符串查找示例。
findstr函数用于返回某一子串在整个字符串中的开始位置。例如在字符串中查找字母a和oo出现的位置,可以使用如下命令:
>> strtemp='have a good time!'
strtemp =
have a good time!
>> position1= findstr('a', strtemp)
position1 =
2 6
>> position2 = findstr('oo', strtemp)
position2 =
9
从本例可以看出,字母a出现在第2和第6两个位置,这说明findstr函数返回的位置信息包括所有出现的子串的位置。而字母'oo'字串只出现了一次,所以只返回一个位置信息。
strtok 函数用于返回分隔字符第1次出现之前的字符。如果不自行指定分隔字符,默认的分隔字符则是泛空格符字符,因此用户可以使用strtok函数将一个句子按照单词分开。
【例3-10】 使用strtok函数进行字符串查找示例。
>> t='I have walked out on a handful ofmovies in my life.'; % 测试字符串
>> remain = t;
>> while true %使用while循环结构
[str, remain] = strtok(remain); % 以默认的空格为分隔符查找
if isempty(str), break; end % 循环跳出控制
disp(sprintf('%s', str)) % 显示结果
end
以下就是使用strtok函数进行多次查找得到的结果:
I
have
walked
out
on
a
handful
of
movies
in
my
life.
函数strmatch用于查找一个字符数组中以指定子串开始的字符串,该函数返回的是以指定子串开始的行编号。
【例3-11】 使用strmatch函数进行字符串查找示例。
>> maxstrings = strvcat('max', 'minimax','maximum') % 测试字符串数组
maxstrings =
max
minimax
maximum
>> strmatch('max', maxstrings) % 在测试字符串数组中查找以max开头的字符串
ans =
1
3
在本例中第二行minimax虽然也包含max子串,但是这个子串的并不是以max开始的,所以在查找过程中没有返回第2行为结果。
3.4 类型转换
在MATLAB中允许不同类型的数据和字符串类型的数据之间进行转换,这种转换需要使用不同的函数完成。另外,同样的数据,特别是整数数据,有很多种表示的格式,例如十进制、二进制或者十六进制。在C语言中,需要使用printf函数通过相应的格式字符串就可以输出不同格式的数据。而在MATLAB中,则直接提供了相应的函数可以完成数制的转换。表3-2和表3-3分别列举了这些函数。
表3-2 数字与字符串之间的转换函数
函 数说 明函 数说 明
num2str将数字转换为字符串str2num将字符串转换为数字
int2str将整数转换为字符串sprintf格式化输出数据到命令行窗口
mat2str将矩阵转换为eval函数可以使用的字符串sscanf读取格式化字符串
str2double将字符串转换为双精度类型的数据
表3-3 不同数值之间的转换函数
函 数说 明函 数说 明
hex2num将十六进制整数字符串转换为双精度数据dec2bin将十进制整数转换为二进制整数字符串
hex2dec将十六进制整数字符串转换为十进制数据base2dec将指定数制类型的数字字符串转换为十进制整数
dec2hex将十进制数据转换为十六进制整数字符串dec2base将十进制整数转换为指定数制类型的数字字符串
bin2dec将二进制整数字符串转换为十进制整数
在表3-2列举的数字与字符串之间的转换函数中,常用的是num2str和str2num。这两个函数在MATLAB的图形用户界面编程中应用较多。
【例3-12】 num2str和str2num函数用法实例。
>> a=['1 2';'3 4'] % 创建一个字符串数组
a =
1 2
3 4
>> b=str2num(a) % 将字符串转换为数值形式
b =
1 2
3 4
>> c=str2num('1+2i') %将字符串转换为数值形式
c =
1.0000 +2.0000i
>> d=str2num('1 +2i') %将字符串转换为数值形式
d =
1.0000 +0.0000i 0.0000 + 2.0000i>>e=num2str(rand(3,3),6) % 将数值转换为字符串形式
e =
0.814724 0.913376 0.278498
0.905792 0.632359 0.546882
0.126987 0.0975404 0.957507
>> whos
Name Size Bytes Class Attributes
a 2x3 12 char
b 2x2 32 double
c 1x1 16 double complex
d 1x2 32 double complex
e 3x35 210 char
本例中转换生成变量c和d时得到了不同的结果,主要原因是在变量d中,数字 “1”和字符“+2i”之间存在空格,而加号“+”和数字“2”之间没有空格,所以转换的结果与生成变量c时不同,创建变量c的时候,在数字“1”、加号“+”和数字“2”之间都存在空格。为了避免出现上述问题,可以使用str2double函数,但是该函数仅能转换标量,不能转换矩阵或者数组。
使用num2str函数将数字转换为字符串时,可以指定字符串所表示的有效数字位数,详细信息可以查阅MATLAB的help文档。
3.5 字符串应用函数小结
MATLAB主要以矩阵计算闻名于世,除此以外该软件在字符串处理方面也提供了一系列非常强大的函数。表3-4对常用字符串函数进行了分类小结。
表3-4 字符串函数
函 数说 明
字符串创建函数'str'由单引号(英文状态)创建字符串
blanks创建空格字符串
sprintf将格式化数据写入字符串
strcat字符串组合
strvcat竖直方向字符串组合
字符串修改函数deblank删除尾部空格
lower将所有字符小写
sort将所有元素升序或降序排列
strjust字符串对齐
strrep字符串替换
strtrim删除开始和尾部的泛空格符
upper将所有字符大写
字符串的读取和操作eval将一个字符串作为MATLAB命令执行
sscanf格式读入字符串
续表
函 数说 明
字符串查找替换函数findstr查找子串
strcmp字符串比较
strcmpi字符串比较,忽略大小写
strmatch查找符合要求的行
strncmp比较字符串的前N个字符
strncmpi比较字符串的前N个字符,忽略大小写
strtok查找某个字符最先出现的位置
matlab字符串表示方法,MATLAB字符和字符串相关推荐
- SQL分割字符串,SQL按照指定字符分割字符串,SQL处理字符串...
SQL分割字符串,SQL按照指定字符分割字符串,SQL处理字符串 -----原文来源于网络 T-SQL对字符串的处理能力比较弱,比如我要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历 ...
- pandas使用pad函数向dataframe特定数据列的每个字符串添加补齐字符或者字符串、向所有字符串的左右两侧填充、直到宽度达到指定要求(both padding)
pandas使用pad函数向dataframe特定数据列的每个字符串添加补齐字符或者字符串.向所有字符串的左右两侧填充.直到宽度达到指定要求(both padding) 目录
- 删除字符串中指定的字符形成字符串
//删除字符串中指定的字符形成字符串 #include <stdio.h> #include <string.h>void fun(char s[],int c) {int n ...
- js笔记(三)ES5、ES5新增的数组的方法、字符串的方法、字符编码、对象的序列化和反序列化、bind
数组方法.字符串方法总结 大目录 小目录 一.ES5严格模式 1. 严格模式: 2. 严格模式的行为变更: 二.ES5新增的数组的方法 1. 判断是否为数组:Array.isArray(): 2. 判 ...
- php 字符串属性,php判断字符以及字符串的包含方法属性
php判断字符以及字符串的包含方法属性 下面介绍使用方法: 1. strstr: 返回一个从被判断字符开始到结束的字符串,如果没有返回值,则不包含 复制代码 代码如下: /*如手册上的举例*/ $em ...
- 正则表达式 - 去掉乱码字符/提取字符串中的中文字符/提取字符串中的大小写字母 - Python代码
目录 1.乱码符号种类较少,用replace() 2.乱码字符种类较多,用re.sub() 3.提取字符串中的中文字符 4.提取字符串中的中文字符和数字 5.提取其他 数据清洗的时候一大烦恼就是数据中 ...
- java里包含怎么算_java中怎么判断一个字符串中包含某个字符或字符串
展开全部 /*这是一62616964757a686964616fe58685e5aeb931333363393630个静态函数,不用声明对象就可以用的,如你的类名为Test,在任何情况下都可以调用Te ...
- Java通过正则剔除乱码_正则表达式 - 去掉乱码字符/提取字符串中的中文字符/提取字符串中的大小写字母 - Python代码...
目录 1.乱码符号种类较少,用replace() 2.乱码字符种类较多,用re.sub() 3.提取字符串中的中文字符 4.提取字符串中的中文字符和数字 5.提取其他 数据清洗的时候一大烦恼就是数据中 ...
- vue把字符串分割成等长的若干字符串,根据特定字符分割字符串
一.把字符串分割成等长的若干字符串 1. 把字符串分割成特定长度的若干字符串(数组形式),这里举一个每5个字符为一组的例子 const strArr = 'new计算-架构&编程-语言'.ma ...
最新文章
- linear model课程笔记
- 有关信号处理中的 窗函数
- jQuery实现页面关键词高亮
- maven 入门介绍
- 腾讯竟然是这样存储你的数据的!!!
- 【泡泡Docker乐园】使用泡泡Docker基础镜像放心大胆地开发吧!
- YYtext简单使用
- 北京内推 | 微软亚洲研究院机器学习组招聘NLP/语音合成等方向全职研究员
- 自学软件测试怎么样,有前景吗?
- vue中的表单数据提交
- 【解决方案】“博物馆热”背后,如何建设安防视频监控体系保障文物安全?
- diyer 电脑_每个DIYer应该拥有的基本工具
- Mysql 死锁和死锁的解决方案
- STM32单片机初学6-SPI通信驱动IPS彩屏
- Java开源技术分享交流群
- 基于磁阻传感器的断路保护装置设计
- Ae安装时出现(此时无法安装错误代码127) 怎么办?
- python实现双屏情况下,第二个屏播发视频
- 亲测:ChatGPT 国内就能使用,全面支持中文
- 【Code Pratice】—— 等差素数列、错误票据、神奇算式