• MATLAB程序设计与应用 2.6 字符串


    MATLAB程序设计与应用

    2. 第2章 MATLAB数据及其运算

    2.6 字符串

    实际应用中,有两种基本的数据类型,一个是数值型数据,一个是字符型数据或称字符串数据。数值型数据比较好理解,是指能参与数值运算的数据,又分为整型、浮点型和复数型。字符型数据在日常应用中则不太强调,但却是大量存在的,例如统计一篇英文文章中不同英文字母出现的次数,按姓名排序,等等。字符串数据由若干个字符组成,这些字符可以是计算机系统中允许使用的任何字符。

    2.6.1 字符串的表示

    在 MATLAB中,字符串是用单引号括起来的字符序列。

    >> xm = 'Hello world'
    
    xm =
    
        'Hello world'
    
    • 1
    • 2
    • 3
    • 4
    • 5

    若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示。

    >> 'I''m a student.'
    
    ans =
    
        'I'm a student.'
    
    • 1
    • 2
    • 3
    • 4
    • 5

    MATLAB将一个字符串当作一个行向量,每个元素对应一个字符,其引用方法和数值向量相同。

    >> A = 'ABCDEF';
    >> A(1:3)
    
    ans =
    
        'ABC'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    建立多行字符串,形成字符串矩阵。

    >> ch = ['abcdef';'123456']
    
    ch =
    
      2×6 char 数组
    
        'abcdef'
        '123456'
    
    >> ch(2,3)
    
    ans =
    
        '3'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    这里要求各行字符数要相等。为此,有时用空格来调节各行的长度,使它们彼此相等。

    例子:建立一个字符串向量,然后对该向量做如下处理。

    • 取第1~~5个字符组成的子字符串。
    • 将字符串倒过来重新排列。
    • 将字符串中的小写字母变成相应的大写字母,其余字符不变。
    • 统计字符串中小写字母的个数。
    >> ch = 'ABc123d4e56Fg9';
    >> subch = ch(1:5); % 取子字符串
    >> subch
    
    subch =
    
        'ABc12'
    
    >> revch = ch(end:-1:1) %将字符串倒排
    
    revch =
    
        '9gF65e4d321cBA'
    
    >> k = find(ch >= 'a' & ch <= 'z') % 找出小写字母的位置
    
    k =
    
         3     7     9    13
    
    >> ch(k) = ch(k) - ('a' - 'A') %根据位置将小写字母变成相应的大写字母
    
    ch =
    
        'ABC123D4E56FG9'
    
    >> length(k) %小写字母的个数
    
    ans =
    
         4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    2.6.2 字符串的操作
    1. 字符串的执行 eval(s)

      与字符串有方的一个重要函数是 eval,它的作用是把学符串的内容作为对应的 MATLAB的命令来执行。

      >> t = pi;
      >> m = '[t,sin(t),cos(t)]';
      >> y = eval(m)
      
      y =
      
          3.1416    0.0000   -1.0000
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    2. 字符串与数值之间的转换

      字符串是以ASCHI码形式存储的,abs和 double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。相反,char函数可以把 ASCI码矩阵转换为字符串矩阵。

      >> s1 = 'MATLAB';
      >> a = abs(s1)
      
      a =
      
          77    65    84    76    65    66
      
      >> char(a + 32)
      
      ans =
      
          'matlab'
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12

      MATLAB还有许多用于字符串和数值数据之间转换的函数:

      • setstr 函数将ASCII码值转换成对应的字符
      • str2num函数或str2double函数将数字字符串转换成数值
      • num2str函数将数值转换成字符串
      • int2str函数将整数转换成字符串。
    3. 字符串的连接

      在 MATLAB中,要将两个字符串连接在一起,有两种常见方法:一是用字符串向量,二是用strcat函数。

      用字符串向量可以将若干个字符串连接起来,即用中括号将若干个字符串括起来,从而得到个更长的字符串。

      >> f = 70;
      >> c = (f - 32) / 1.8;
      >> ['Room temperature is ',num2str(c) , ' degrees C.']
      
      ans =
      
          'Room temperature is 21.1111 degrees C.'
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      strcat的数可以将若干个字符串连接起来。

      >> strcat('ss','ff','DD','1234')
      
      ans =
      
          'ssffDD1234'
      
      • 1
      • 2
      • 3
      • 4
      • 5
    4. 字符串的比较

      字符串的比较有两种方法:利用关系运算符或学符串比较函数。

      当两个字符串拥有相同的长度时,可以利用关系运算符对字符串进行比较,比较的规则是按ASCII值大小逐个字符进行比较,比较的结果是一个数值向量,其元素为对应字符比较的结果。

      >> 'www0' >= 'W123'
      
      ans =
      
        1×4 logical 数组
      
         1   1   1   0
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      字符串比较函数用于判断字符串是否相等,有4种比较方式:

      • strcmp(s1,s2):用来比较字符串s1和s2是否相等,如果相等,返回1,否则返回0。
      • strncmp(s1,s2,n):用来比较前n个字符是否相等,如果相等,返回1,否则返回0。
      • strcmpi(s1,s2):在忽略字母大小写前提下,比较字符串s1和s2是否相等,如果相等,返回1,否则返回0。
      • strcmpi(sl,s2,n):在忽略字符串大小写前提下,比较前n个字符是否相等,如果相等,返回1,否则返回0。
      >> strcmp('www0','W123')
      
      ans =
      
        logical
      
         0
      
      >> strncmpi('www0','W123',1)
      
      ans =
      
        logical
      
         1
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
    5. 字符串的查找与替换

      MATLAB提供了许多函数,用来对字符串中的字符进行查找与替换。

      • findstr(s1 , s2) :返回短字符串在长字符串中的开始位置。

        >> p = findstr('This is a test!','is')
        
        p =
        
             3     6
        
        • 1
        • 2
        • 3
        • 4
        • 5
      • strrep(s1 , s2 , s3) : 将字符串s1中的所有子字符串s2替换为字符串s3。

        >> result = strrep('This is a test!','test','class')
        
        result =
        
            'This is a class!'
        
        • 1
        • 2
        • 3
        • 4
        • 5
  • 相关阅读:
    如何提高跨境店铺的权重—扬帆凌远
    传统广电媒体为何选择上云?有何优势?
    大型地震灾害应急通信系统解决方案
    CMD//
    slice切片介绍
    Flink报错处理-1
    流程自动化(RPA)的好处有哪些?
    windows系统使用bat脚本批量启动程序
    常用算法记录整理
    荧光染料Cy7 酰肼,Cy7 hydrazide,Cy7 HZ参数及结构式解析
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/126133193