String Matlab中字符串和字符的区别是什么?

String Matlab中字符串和字符的区别是什么?,string,matlab,char,String,Matlab,Char,MATLAB中字符串和字符类的区别是什么 a = 'AX'; % This is a character. b = string(a) % This is a string. 委员会: 在MATLAB®中有两种表示文本的方法。可以将文本存储在字符数组中。一个典型的用途是将短文本段存储为字符向量。从2016b版开始,您还可以在字符串数组中存储多段文本。字符串数组提供了一组用于将文本作为数据处理的函数 这就是两种表述的不同之处: 元素访问。为了表示不同长度的char向量,必须使用cell数组,例

MATLAB中字符串和字符类的区别是什么

a = 'AX'; % This is a character.
b = string(a) % This is a string.
委员会:

在MATLAB®中有两种表示文本的方法。可以将文本存储在字符数组中。一个典型的用途是将短文本段存储为字符向量。从2016b版开始,您还可以在字符串数组中存储多段文本。字符串数组提供了一组用于将文本作为数据处理的函数

这就是两种表述的不同之处:

  • 元素访问。为了表示不同长度的
    char
    向量,必须使用
    cell
    数组,例如
    ch={'a','ab','abc'}
    。使用字符串,可以在实际数组中创建它们:
    str=[string('a')、string('ab')、string('abc')]
    。 但是,要直接在字符串数组中输入,必须使用花括号表示法:

    str{3}(2) % == 'b'
    
  • 内存使用。字符每个字符正好使用两个字节<代码>字符串s有开销:

    a = 'abc'
    b = string('abc')
    whos a b
    
    返回


理解差异的最佳起点是。关键区别如下所述:

  • 字符数组是字符序列,正如数字数组是数字序列一样。一个典型的用法是将短文本作为字符向量存储,例如
    c='helloworld'
  • 字符串数组是文本片段的容器。字符串数组提供了一组用于将文本作为数据处理的函数。要将文本转换为字符串数组,请使用
    string
    函数
以下是关于它们之间差异的几个关键点:

  • 它们是不同的类别(即类型):与。因此,他们将为每种方法定义不同的方法集。想一想你想对你的文本做什么样的操作,然后选择一个最能支持这些操作的
  • 由于
    字符串
    是一个容器类,请注意其大小与等效字符数组表示形式的不同。以您的例子:

    >> a = 'AX'; % This is a character.
    >> b = string(a) % This is a string.
    >> whos
      Name      Size            Bytes  Class     Attributes
    
      a         1x2                 4  char                
      b         1x1               134  string
    
    请注意,
    string
    容器将其大小列为
    1x1
    (并在内存中占用更多字节),而字符数组,顾名思义,是一个
    1x2
    字符数组

  • 它们不能总是互换使用,对于某些操作,您可能需要在两者之间进行转换。例如,
    string
    对象不能用作:


    • 字符串确实有一些开销,但每个字符仍会增加2个字节。每8个字符后,它会增加变量的大小。红线是
      y=2x+127

      图是使用以下方法创建的:

      v=[];N=100;
      for ct = 1:N
          s=char(randi([0 255],[1,ct]));
          s=string(s);
          a=whos('s');v(ct)=a.bytes;
      end
      figure(1);clf
      plot(v)
      xlabel('# characters')
      ylabel('# bytes')
      p=polyfit(1:N,v,1);
      hold on
      plot([0,N],[127,2*N+127],'r')
      hold off
      

      需要注意的一个重要的实际问题是,字符串和字符在与方括号交互时的行为不同。当来自python时,这可能会特别令人困惑。考虑下面的例子:

      >>['asdf' '123']
      
      ans =
      
          'asdf123'
      
      >> ["asdf" "123"]
      
      ans = 
      
        1×2 string array
      
          "asdf"    "123"
      
      v=[];N=100;
      for ct = 1:N
          s=char(randi([0 255],[1,ct]));
          s=string(s);
          a=whos('s');v(ct)=a.bytes;
      end
      figure(1);clf
      plot(v)
      xlabel('# characters')
      ylabel('# bytes')
      p=polyfit(1:N,v,1);
      hold on
      plot([0,N],[127,2*N+127],'r')
      hold off
      
      >>['asdf' '123']
      
      ans =
      
          'asdf123'
      
      >> ["asdf" "123"]
      
      ans = 
      
        1×2 string array
      
          "asdf"    "123"