当前位置:天才代写 > tutorial > Matlab教程 > Matlab字符串

Matlab字符串

2017-11-02 08:00 星期四 所属: Matlab教程 浏览:1571


在MATLAB中建设一个字符串很是简朴。 事实上,在前面的示例中我们已经利用了许多次。 譬喻,在呼吁提示符下键入以下内容:

my_string = 'Yiibai Yiibai'

MATLAB执行上述语句并返回以下功效 –

Trial>> my_string = 'Yiibai Yiibai'

my_string =

    'Yiibai Yiibai'

MATLAB将所有变量视为数组,并将字符串视为字符数组。利用whos呼吁来查抄上面建设的变量 –


Trial>> whos
  Name           Size            Bytes  Class    Attributes

  ans            1x92              184  char               
  my_string      1x16               32  char               
  x              1x3               360  cell

有趣的是,可以利用uint8uint16等数字转换函数将字符串中的字符转换为数字代码。 char函数将整数向量转换回到字符 –

示例

建设剧本文件并在个中键入以下代码 –

my_string = 'Yiibai''s Tutorial';
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 =

  1×17 uint8 行向量

  1 至 15 列

    89   105   105    98    97   105    39   115    32    84   117   116   111   114   105

  16 至 17 列

    97   108


str_back_to_char =

    'Yiibai's Tutorial'


str_16bit =

  1×17 uint16 行向量

  1 至 15 列

    89   105   105    98    97   105    39   115    32    84   117   116   111   114   105

  16 至 17 列

    97   108


str_back_to_char =

    'Yiibai's Tutorial'

矩形字符数组

到今朝为止,我们接头的字符串是一维字符数组; 然而,我们需要存储更多维度的数据。在措施中存储更多的维度文本数据。这是通过建设矩形字符数组来实现的。

建设矩形字符阵列的最简朴的方法是按照需要垂直或程度毗连两个或更多个一维字符数组。

通过以下任一方法垂直组合字符串 –

  • 利用MATLAB毗连运算符[]并用分号(;)脱离每一行。 请留意,在这种要领中,每行必需包括沟通数量的字符。对付差异长度的字符串,应该按照需要填充空格字符。

  • 利用char函数。假如字符串的长度差异,则char将较短的字符串填充到尾部空缺处,以使每行具有沟通的字符数。

  • 示例

    建设剧本文件并在个中键入以下代码 –

    doc_profile = ['Bara Tli                             '; ...
                   'Sr. Surgeon                          '; ...
                   'R N Tagore Cardiology Research Center']
    doc_profile = char('Bara Tli', 'Sr. Surgeon', ...
                       'RN Tagore Cardiology Research Center')
    

    运行文件时,会显示以下功效 –

    Trial>> doc_profile = ['Bara Tli                             '; ...
                   'Sr. Surgeon                          '; ...
                   'R N Tagore Cardiology Research Center']
    doc_profile = char('Bara Tli', 'Sr. Surgeon', ...
                       'RN Tagore Cardiology Research Center')
    
    doc_profile =
    
      3×37 char 数组
    
        'Bara Tli                             '
        'Sr. Surgeon                          '
        'R N Tagore Cardiology Research Center'
    
    
    doc_profile =
    
      3×36 char 数组
    
        'Bara Tli                            '
        'Sr. Surgeon                         '
        'RN Tagore Cardiology Research Center'
    

    可以通过以下任一方法程度组合字符串 –

  • 利用MATLAB毗连运算符 – []并用逗号(;)或空格脱离输入字符串。该要领保存输入数组中的任何尾随空格。
  • 利用字符串通接函数 – strcat。 此要了解删除输入中的尾随空格。
  • 示例

    建设剧本文件并在个中键入以下代码 –

    name =     'Myra Yli                             ';
    position = 'Sr. Surgeon                          '; 
    worksAt =  'R N Tagore Cardiology Research Center';
    profile = [name ', ' position ', ' worksAt]
    profile = strcat(name, ', ', position, ', ', worksAt)
    

    #p#分页标题#e#

    执行上面示例代码,获得以下功效 –

    Trial>> name =     'Myra Yli                             ';
    position = 'Sr. Surgeon                          '; 
    worksAt =  'R N Tagore Cardiology Research Center';
    profile = [name ', ' position ', ' worksAt]
    profile = strcat(name, ', ', position, ', ', worksAt)
    
    profile =
    
        'Myra Yli                             , Sr. Surgeon                          , R N Tagore Cardiology Research Center'
    
    
    profile =
    
        'Myra Yli,Sr. Surgeon,R N Tagore Cardiology Research Center'
    

    将字符串组合成单位格数组

    从前面的进修中,很明明,组合差异长度的字符串大概会很疾苦,因为数组中的所有字符串都必需具有沟通的长度。在字符串的末端利用了空格,使其长度相等。

    然而,组合字符串的更有效的要领是将生成的数组转换为单位格数组。

    MATLAB单位格数组可以在数组中生存差异巨细和范例的数据。单位格数组提供了一种更机动的要领来存储差异长度的字符串。

    cellstr函数将字符数组转换为字符串的单位格数组。

    示例

    建设剧本文件并在个中键入以下代码 –

    name =     'Myra Tli                             ';
    position = 'St. Sargeon                          '; 
    worksAt =  'R N Tagore Cardiology Research Center';
    profile = char(name, position, worksAt);
    profile = cellstr(profile);
    disp(profile)
    

    执行上面示例代码,获得以下功效 –

    Trial>> name =     'Myra Tli                             ';
    position = 'St. Sargeon                          '; 
    worksAt =  'R N Tagore Cardiology Research Center';
    profile = char(name, position, worksAt);
    profile = cellstr(profile);
    disp(profile)
        'Myra Tli'
        'St. Sargeon'
        '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个字符(不区分巨细写)

    #p#分页标题#e#

    将字符串变动为大写或小写,建设或删除空格的函数 –

    函数 描写
    deblank 从字符串末端剥去尾随空格
    strtrim 从字符串中删除前导和尾随的空格
    lower 将字符串转换为小写
    upper 将字符串转换为大写字母
    strjust 对齐字符数组

    例子

    以下示例说明白一些上述字符串函数 –

    名目化字符串
    建设剧本文件并在个中键入以下代码 –

    A = pi*1000*ones(1,5);
    sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)
    

    执行上面示例代码,获得以下功效 –

    ans =  3141.592654 
     3141.59 
     +3141.59 
          3141.59 
     000003141.59
    

    字符串通接

    建设剧本文件并在个中键入以下代码 –

    %cell 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, ",")
    

    执行上面示例代码,获得以下功效 –

    str1 = red-blue-green-yellow-orange
    str2 = red,blue,green,yellow,orange
    

    查找和替换字符串

    建设剧本文件并在个中键入以下代码 –

    students = {'Bara Ali', 'Neha Bhatnagar', ...
                'Nonica Malik', 'Madhu Gautam', ...
                'Nadhu Sharma', 'Bhawna Sharma',...
                'Muha Ali', 'Reva Dutta', ...
                'Tunaina 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)
    

    执行上面示例代码,获得以下功效 –

    Trial>> students = {'Bara Ali', 'Neha Bhatnagar', ...
                'Nonica Malik', 'Madhu Gautam', ...
                'Nadhu Sharma', 'Bhawna Sharma',...
                'Muha Ali', 'Reva Dutta', ...
                'Tunaina 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)
    
    new_student =
    
      1×1 cell 数组
    
        {'Poulomi Dutta'}
    
    
    first_names =
    
      1×10 cell 数组
    
      1 至 7 列
    
        {'Bara'}    {'Neha'}    {'Nonica'}    {'Madhu'}    {'Nadhu'}    {'Bhawna'}    {'Muha'}
    
      8 至 10 列
    
        {'Reva'}    {'Tunaina'}    {'Sofia'}
    

    较量字符串

    建设剧本文件并在个中键入以下代码 –

    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
    

    执行上面示例代码,获得以下功效 –

    str1 = This is test
    str2 = This is text
    ans = This is test and This is text are not equal
    

     

      关键字:

    天才代写-代写联系方式