MATLAB字符串
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
字符串
设定字符串
MATLAB中只需用单引号“’”将需要设定的字符串引注即可
str='This is a string! It can be used easily!'
whos
此外字符串内的单引号是由两个连续的单引号来表示,字符串链接可以直接从数组连接中得到
u='Taiwan is part of China,'
v='and Jiang core said:''There must be a war between the strait!'''
w=[u v]
字符串可以有多个行,但每行必须有相同数目的列数,因此要用空格使所有行有相同的长度t=['yuyu '
'chenrui']
字符串的操作
1、字符串元素的读取
(1)、利用数组操作工具
str(6)
str(5)
s=str(10:16)
w=str(16:-1:10) %s的倒序
(2)、使用disp函数
disp允许不显示它的变量名而显示一个字符串
str
s
disp(str) %省去了str=
disp(s) %省去了s=
2、字符串的基本变换
(1)、ASCII码操作:将字符串变为ASCII码
a=abs(str)
(2)、使用char函数进行逆变换
S=char(X):将包含正数(ASCII码的前127个数码)的数组X转换为字符型数组的对应行
S=char(T1,T2,T3,…):生成的字符串矩阵包含字符串T1、T2和T3,他们的字符个数可以不相等,分别转换到对应
S=char(C):C是字符型单元数组,该命令将C中的每个单元转换为字符型数组的对应行
t=['yuyu ';'chenrui']
s=abs(t)
b=char(s)
s=char('yuyu','and chenrui') %显示为两行
ss={'Matlab','NJUPT','Yuyu'}
sss=char(ss) %显示为三行
其具体的字符串函数与C语言类似
(3)、字符串的执行(eval函数:将括号内的字符串视为语句并运行)
eval('a= magic(4)')
for n=3:5
eval(['M' num2str(n) '=magic(n)'])
end
3、字符串的运算
(1)、判断字符串是否相等
strcmp(s1,s2):相等返回1,不等返回0
strncmp(s1,s2,n):判断s1和s2的前n个字符是否相等,相等返回1,不等返回0
words1='situate';
words2='situp';
N1=strcmp(words1,words2)
N2=strncmp(words1,words2,3)
N3=strncmp(words1,words2,4)
N4=strncmp(words1,words2,5)
单元数组情况
famous1={'GREAT';'SUMMER PALACE';'JIU ZHAI GOU'};
famous2={'GREAT';'TAI MOUNTAIN';'ZHANGJIAJIE'};
N=strcmp(famous1,famous2)
N=strncmp(famous1,famous2,1)
N=strncmp(famous1,famous2,3)
(2)、通过字符的运算比较字符
对字符串当做字符数组进行比较
F1='CARESS ';
F2='CHARLATAN';
F1>=F2 %结果101011000
(3)、字符串中字符的分类
isspace(S):判断字符S是否为空白字符
isletter(S):判断字符S是否为字母字符
realstring=' yuyu19900626@';
A=isspace(realstring)
A=isletter(realstring)
(4)、查找与替换
K=findstr(S1,S2):根据所给的字符串中的字符来查找字符串,当查找成功后返回字符的具体位置,S1和S2可以互调
s='How much wood would a woodchunk chunk?';
a1=findstr(s,'a') %返回21
a2=findstr(‘a’,s) %返回21
a3=findstr(s,'A')
a4=findstr(s,'wood')
a5=findstr(s,'Wood')
a6=findstr(s,' ')
K=strfind(text,pattern):根据所给字符串中的字符来查找字符串,只能在text中查找pattern
s='How much wood would a woodchunk chunk?';
b1=strfind(s,'a')
b2=strfind('a',s) %结果为空
b3=strfind(s,'wood')
b4=strfind(s,'Wood')
b5=strfind(s,' ')
S=strrep(S1,S2,S3):把字符串S1中的S2字符串都换成字符串S3,并返回置换后的新字符串s1='This is a beautiful women!';
strrep(s1,'women','girl') %This is a beautiful girl!
strrep(s1,'beautiful','ugly') %This is a ugly women!
strrep(s1,'','women') %This is a beautiful women!
(5)、字符串与数值的转换
T=num2str(X):将矩阵X转换为一个字符串T,T的精度为4位小数
T=num2str(X,N):N为精度,最多16位
T=num2str(X,format):转换为format格式的字符串
X=num2str(rand(6))
num2str(pi,10)
num2str(pi,30)
S=int2str(X):将矩阵X中的元素取整后在转换为字符串矩阵
X=int2str(rand(6))
Y=num2str(rand(6),0) %这两个结果不同
X=int2str(S):将一个字符型矩阵S转换为数字矩阵
S=['1 2';'3 4']
X=str2num(S)
字符型矩阵S中的元素必须为ASCII码中的数字字符,每个元素可以包括数字、小数点
以及数字前的+和-,也可以是指数形式的字符或复数型字符,如果字符串矩阵S中含有不在上述规定的元素,str2num(S)返回一个空矩阵,[X,OK]=str2num(S)将返回OK=0
str2num会产生边际效应,可以用str2double函数来避免边际效应的产生
str2num('1+2i') %1+2i
str2num('1 + 2i') %1+2i
str2num('1 +2i') %1和2i
str2double('1+2i') %1+2i
S=['s e';'3 4']
X=str2num(S)
[X OK]=str2num(S) %X为空矩阵,OK=0
X=str2double(S):将字符串矩阵转换为数字矩阵,字符规定同str2num,若S中含有不符合规定的元素,该函数返回NaN
X=str2double(C):将单元型字符矩阵C中的元素转换为双精度数值矩阵
str2double('123.45e7')
str2double('123+45i')
str2double('3.14159')
str2double('2.7i-3.14')
str2double({'2.71' '3.1415'})
str2double('1,200.34')