MATLAB字符串
在MATLAB中,创建一个字符串是相当简单。事实上,我们已经用了很多次。例如,在命令提示符处输入以下:
my_string='Tutorial''s Yiibai'
MATLAB 将执行上面的语句,并返回以下结果:
my_string =
Tutorial's Yiibai
MATLAB 认为所有变量,数组和字符串被视为字符数组。让我们使用的命令检查上面创建的变量:
whos
MATLAB将执行上面的语句,并返回以下结果:
Name Size Bytes Class Attributes
my_string 1x16 32 char
有趣的是,你可以使用数字转换函数,如uint8 或 uint16 字符串中的字符转换成数字代码。 char 函数整数向量转换回字符:
例子
创建一个脚本文件,并键入下面的代码:
my_string='Tutorial''s Yiibai';str_ascii=uint8(my_string)%8-bit ascii values
str_back_to_char=char(str_ascii)str_16bit=uint16(my_string)%16-bit ascii values
str_back_to_char=char(str_16bit)
当您运行该文件,它会显示以下结果:
str_ascii =
Columns 1 through 14
84 117 116 111 114 105 97 108 39 115 32 80 111 105
Columns 15 through 16
110 116
str_back_to_char =
Tutorial's Yiibai
str_16bit =
Columns 1 through 10
84 117 116 111 114 105 97 108 39 115
Columns 11 through 16
32 80 111 105 110 116
str_back_to_char =
Tutorial's Yiibai
矩形字符数组
到目前为止我们已经讨论过的字符串的字符数组是一维,但是,我们需要存储超过。我们需要更立体的文本数据存储在我们的程序中。这是通过创建的矩形的字符数组。
创建一个矩形字符数组的最简单的方法是通过连接两个或两个以上的一维字符数组,无论是垂直或水平的要求。
您可以合并垂直字符串通过以下方式之一:
使用 MATLAB 连接运算符[]和分离每行一个分号(;)。请注意,在该方法中的每一行必须包含相同的字符数。不同长度的字符串,应该根据需要使用空格字符。
使用char函数。如果字符串长度不同和 char 补齐较短尾随空白,使每一行都有相同数量的字符的字符串。
例子
创建一个脚本文件,并键入下面的代码:
doc_profile=['Zara Ali ';...'Sr. Surgeon ';...'R N Tagore Cardiology Research Center']doc_profile=char('Zara Ali','Sr. Surgeon',...'RN Tagore Cardiology Research Center')
当您运行该文件,它会显示以下结果:
doc_profile =
Zara Ali
Sr. Surgeon
R N Tagore Cardiology Research Center
doc_profile =
Zara Ali
Sr. Surgeon
RN Tagore Cardiology Research Center
可以横向合并字符串以下方式之一:
使用MATLAB串连运算,[],并用逗号或空格分隔输入字符串。这种方法保留任何尾随空格输入数组。
使用字符串连接函数strcat。此方法删除尾随空格输入
例子
创建一个脚本文件,并键入下面的代码:
name='Zara Ali ';position='Sr. Surgeon ';worksAt='R N Tagore Cardiology Research Center';profile=[name', 'position', 'worksAt]profile=strcat(name,', ',position,', ',worksAt)
当您运行该文件,它会显示以下结果:
profile =
Zara Ali , Sr. Surgeon , R N Tagore Cardiology Research Center
profile =
Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center
结合成的字符串单元阵列
从前面的讨论,很显然,具有不同长度的字符串相结合,可能是一个痛苦作为在阵列中的所有字符串具有相同的长度。我们已经使用空格的字符串的结尾,其长度相等。
然而,更有效的方式结合字符串转换成一个单元阵列的阵列。
MATLAB单元阵列可以容纳不同尺寸和类型的数据,在一个数组中。单元格阵列提供了一个更灵活的方式来存储不同长度的字符串。
cellstr函数将字符数组转换成字符串单元阵列。
例子
创建一个脚本文件,并键入下面的代码:
name='Zara Ali ';position='Sr. Surgeon ';worksAt='R N Tagore Cardiology Research Center';profile=char(name,position,worksAt);profile=cellstr(profile);disp(profile)
当您运行该文件,它会显示以下结果:
'Zara Ali'
'Sr. Surgeon'
'R N Tagore Cardiology Research Center'
MATLAB中的字符串函数
MATLAB 提供了许多创建,组合,分析,比较和处理字符串的字符串函数。
下表提供 MATLAB 中的字符串函数的简要说明:
函数
目的/作用
用于存储文本字符数组的函数,结合字符数组,等等
blanks
Create string of blank characters
cellstr
Create cell array of strings from character array
char
Convert to character array (string)
iscellstr
Determine whether input is cell array of strings
ischar
Determine whether item is character array
sprintf
Format data into string
strcat
Concatenate strings horizontally
strjoin
Join strings in cell array into single string
识别字符串部分的函数,查找和替换子串
ischar
Determine whether item is character array
isletter
Array elements that are alphabetic letters
isspace
Array elements that are space characters
isstrprop
Determine whether string is of specified category
sscanf
Read formatted data from string
strfind
Find one string within another
strrep
Find and replace substring
strsplit
Split string at specified delimiter
strtok
Selected parts of string
validatestring
Check validity of text string
symvar
Determine symbolic variables in expression
regexp
Match regular expression (case sensitive)
regexpi
Match regular expression (case insensitive)
regexprep
Replace string using regular expression
regexptranslate
Translate string into regular expression
字符串比较函数
strcmp
Compare strings (case sensitive)
strcmpi
Compare strings (case insensitive)
strncmp
Compare first n characters of strings (case sensitive)
strncmpi
Compare first n characters of strings (case insensitive)
改变字符串大写或小写,创建或删除空格的函数
deblank
Strip trailing blanks from end of string
strtrim
Remove leading and trailing white space from string
lower
Convert string to lowercase
upper
Convert string to uppercase
strjust
Justify character array
例子
下面的示例说明了上述的一些字符串的函数:
格式化字符串
创建一个脚本文件,并键入下面的代码:
A=pi*1000*ones(1,5);sprintf(' %f
%.2f
%+.2f
%12.2f
%012.2f
',A)
当您运行该文件,它会显示以下结果:
ans =
3141.592654
3141.59
+3141.59
3141.59
000003141.59
加入字符串
创建一个脚本文件,并键入下面的代码:
%cell array of strings
str_array={'red','blue','green','yellow','orange'};%Joinstringsincell arrayintosinglestringstr1=strjoin("-",str_array)str2=strjoin(",",str_array)
当您运行该文件,它会显示以下结果:
str1 =
red blue green yellow orange
str2 =
red , blue , green , yellow , orange
查找和替换字符串
创建一个脚本文件,并键入下面的代码:
students={'Zara Ali','Neha Bhatnagar',...'Monica Malik','Madhu Gautam',...'Madhu Sharma','Bhawna Sharma',...'Nuha Ali','Reva Dutta',...'Sunaina Ali','Sofia Kabir'};%Thestrrepfunctionsearchesandreplacessub-string.new_student=strrep(students(8),'Reva','Poulomi')%Displayfirst names
first_names=strtok(students)
当您运行该文件,它会显示以下结果:
new_student =
'Poulomi Dutta'
first_names =
Columns 1 through 6
'Zara' 'Neha' 'Monica' 'Madhu' 'Madhu' 'Bhawna'
Columns 7 through 10
'Nuha' 'Reva' 'Sunaina' 'Sofia'
比较字符串
创建一个脚本文件,并键入下面的代码:
str1='This is test'str2='This is text'if(strcmp(str1,str2))sprintf('%s and %s are equal',str1,str2)elsesprintf('%s and %s are not equal',str1,str2)end
当您运行该文件,它会显示以下结果:
str1 =
This is test
str2 =
This is text
ans =
This is test and This is text are not equal