MATLAB-字符串

2022-07-27 09:16:07 浏览数 (1)

本节我们学习如何在MATLAB中创建一个字符串。

例如:

代码语言:javascript复制
my_string = '搬砖工程师domi'

MATLAB执行上述语句,返回以下结果:

代码语言:javascript复制
my_string =

    '搬砖工程师domi'

MATLAB 认为所有变量,数组和字符串被视为字符数组。

让我们使用命令检查上面创建的变量:

代码语言:javascript复制
whos

MATLAB执行上面的语句,返回以下结果:

代码语言:javascript复制
 Name           Size            Bytes  Class    Attributes

  my_string      1x9                18  char               

你可以使用数字转换函数,如 uint8 或 uint16 字符串中的字符转换成数字代码。

char 函数整数向量转换回字符

详细例子

在MATLAB中建立一个脚本文件,输入下述代码:

代码语言:javascript复制
my_string = '搬砖工程师domi'
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)

运行该文件,显示以下结果:

代码语言:javascript复制
my_string =

    '搬砖工程师domi'


str_ascii =

  1×9 uint8 行向量

   255   255   255   255   255   100   111   109   105


str_back_to_char =

    'ÿÿÿÿÿdomi'


str_16bit =

  1×9 uint16 行向量

  列 1 至 8

   25644   30742   24037   31243   24072     100     111     109

  列 9

     105


str_back_to_char =

    '搬砖工程师domi'

MATLAB矩形字符数组

目前为止我们已经讨论过的字符串的字符数组是一维,但是我们需要更立体的文本数据存储在我们的程序中。这是通过创建的矩形的字符数组。

建立一个矩形字符数组的最简单的方法是通过连接两个或两个以上的一维字符数组,无论是垂直或水平的要求。

您可以通过以下方式之一合并垂直字符串:

  • 使用 MATLAB 连接运算符 [] 和分离每行一个分号(;)。请注意,在该方法中的每一行必须包含相同的字符数。不同长度的字符串,应该根据需要使用空格字符。
  • 使用 char 函数。如果字符串长度不同和 char 补齐较短尾随空白,使每一行都有相同数量的字符的字符串。

详细例子

在MATLAB中建立一个脚本文件,输入下述代码:

代码语言:javascript复制
doc_profile = ['Zara Ali                             '; ...
               'Sr. Surgeon                          '; ...
               'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
                   'RN Tagore Cardiology Research Center')

运行该文件,显示以下结果:

代码语言:javascript复制
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。此方法删除尾随空格输入

详细例子

在MATLAB中建立一个脚本文件,并输入下述代码:

代码语言:javascript复制
name =     'Zara Ali                             ';
position = 'Sr. Surgeon                          '; 
worksAt =  'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)

运行该文件,显示以下结果:

代码语言:javascript复制
profile =
Zara Ali                             , Sr. Surgeon                          , R N Tagore Cardiology Research Center
profile =
Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center

结合成的字符串单元阵列

从前面的讨论,很显然,具有不同长度的字符串相结合,可能是一个痛苦作为在阵列中的所有字符串具有相同的长度。我们已经使用空格的字符串的结尾,其长度相等。

然而,有更有效的方式结合字符串转换成一个单元阵列的阵列。

MATLAB单元阵列可以容纳不同尺寸和类型的数据,在一个数组中。单元格阵列提供了一个更灵活的方式来存储不同长度的字符串。

cellstr 函数将字符数组转换成字符串单元阵列。

详细例子

在MATLAB中建立一个脚本文件,输入下述代码:

代码语言:javascript复制
name =     'Zara Ali                             ';
position = 'Sr. Surgeon                          '; 
worksAt =  'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)

运行该文件,显示以下结果:

代码语言:javascript复制
'Zara Ali'
'Sr. Surgeon'
'R N Tagore Cardiology Research Center'

MATLAB中的字符串函数

MATLAB 提供了许多创建、组合、分析、比较和处理字符串的字符串函数。

下表是对 MATLAB 中字符串函数的简要说明:

函数

目的/作用

用于存储文本字符数组的函数,结合字符数组,等等

blanks

创建空白字符的字符串

cellstr

从字符数组中创建字符串单元格数组

char

转换为字符数组 (字符串)

iscellstr

确定输入是否是字符串的单元格数组

ischar

确定项是否为字符数组

sprintf

将数据格式化为字符串

strcat

水平串联字符串

strjoin

将单元格数组中的字符串合并为单个字符串

识别字符串部分的函数,查找和替换子串

ischar

确定项是否为字符数组

isletter

按照字母次序的数组元素

isspace

数组元素是空格字符

isstrprop

确定字符串是否为指定类别

sscanf

从字符串读取格式化数据

strfind

在另一个字符串中找到一个字符串

strrep

查找和替换字符串

strsplit

在指定分隔符处拆分字符串

strtok

字符串的选定部分

validatestring

检查文本字符串的有效性

symvar

在表达式中确定符号变量

regexp

匹配正则表达式 (区分大小写)

regexpi

匹配正则表达式 (不区分大小写)

regexprep

使用正则表达式替换字符串

regexptranslate

将字符串转换为正则表达式

字符串比较函数

strcmp

比较字符串 (区分大小写)

strcmpi

比较字符串 (不区分大小写)

strncmp

比较字符串的前 n 个字符 (区分大小写)

strncmpi

比较字符串的前 n 个字符 (不区分大小写)

改变字符串大写或小写,创建或删除空格的函数

deblank

从字符串末尾分隔尾随空格

strtrim

从字符串中删除前导空格和尾随空格

lower

将字符串转换为小写

upper

将字符串转换为大写

strjust

对齐字符数组

详细例子

接下来对上述的字符串的函数进行举例说明:

格式化字符串

在MATLAB中建立一个脚本文件,输入下述代码:

代码语言:javascript复制
A = pi*1000*ones(1,5);
sprintf(' %f 
 %.2f 
 % .2f 
 .2f 
 2.2f 
', A)

运行该文件,显示以下结果:

代码语言:javascript复制
ans =
 3141.592654 
 3141.59 
  3141.59 
      3141.59 
 000003141.59

加入字符串

在MATLAB中建立一个脚本文件,输入下述代码:

代码语言:javascript复制
�ll array of strings
str_array = {'red','blue','green', 'yellow', 'orange'};

% Join strings in cell array into single string
str1 = strjoin("-", str_array)
str2 = strjoin(",", str_array)

运行该文件,显示以下结果:

代码语言:javascript复制
str1 =
red blue green yellow orange
str2 =
red , blue , green , yellow , orange

查找和替换字符串

在MATLAB中建立一个脚本文件,并输入下述代码:

代码语言:javascript复制
students = {'Zara Ali', 'Neha Bhatnagar', ...
            'Monica Malik', 'Madhu Gautam', ...
            'Madhu Sharma', 'Bhawna Sharma',...
            'Nuha Ali', 'Reva Dutta', ...
            'Sunaina Ali', 'Sofia Kabir'};
 
% The strrep function searches and replaces sub-string.
new_student = strrep(students(8), 'Reva', 'Poulomi')
% Display first names
first_names = strtok(students)

运行该文件,显示以下结果:

代码语言:javascript复制
new_student = 
    'Poulomi Dutta'
first_names = 
  Columns 1 through 6
    'Zara'    'Neha'    'Monica'    'Madhu'    'Madhu'    'Bhawna'
  Columns 7 through 10
    'Nuha'    'Reva'    'Sunaina'    'Sofia'

比较字符串

在MATLAB中建立一个脚本文件,输入下述代码:

代码语言:javascript复制
str1 = 'This is test'
str2 = 'This is text'
if (strcmp(str1, str2))
 sprintf('%s and %s are equal', str1, str2)
else
 sprintf('%s and %s are not equal', str1, str2)
end

运行该文件,显示以下结果:

代码语言:javascript复制
str1 =
This is test
str2 =
This is text
ans =
This is test and This is text are not equal

0 人点赞