【问题标题】:I have a vector, for example, (1,2,3,4) and I want to change the numbers into string我有一个向量,例如 (1,2,3,4),我想将数字更改为字符串
【发布时间】:2014-04-04 09:23:56
【问题描述】:

我有一个向量,(1,2,3,4),我想用'AA' 标记1,用'AB' 标记2,用'CD' 标记3,用'Hello' 标记4,等等。它应该像一个向量('AA','AB','CD','Hello')。有可能吗?

【问题讨论】:

    标签: string matlab vector map


    【解决方案1】:

    MATLAB 有一个Mapcontainer type

    keySet = 1:4;
    valSet = {'AA','AB','CD','Hello'};
    map = containers.Map(keySet,valSet);
    

    使用values method获取一些请求的值:

    >> vals = map.values(num2cell([3 2 1 4]))
    vals = 
        'CD'    'AB'    'AA'    'Hello'
    

    【讨论】:

      【解决方案2】:

      简单易行,使用cell array,例如:

      v = {'AA','AB','CD','Hello'};
      

      那就试试吧,

      v{1}
      

      等等。 (注意大括号...{})

      编辑:这与:

      v{1}='AA';
      v{2}='AB'; ...
      ...
      

      【讨论】:

      • 但是我已经得到了一个数字向量 (1,2,3,4),我需要将 1 更改为 AA,2 更改为 AB,3 更改为 CD,4 更改为 Hello。跨度>
      • 你的向量只有 4 个元素吗?请问一个更准确的问题......无论如何,由于元素的数量不是恒定的(AA vs Hello),这样做的方法是创建一个单元格数组。您不能使用数字向量来托管可变长度的字符串。 (另见我的编辑)
      • 我可以这样做:使用 'num2str' 将数字向量更改为字符串。假设数值向量是A=(1,2,3,4),那么S=num2str(A)就会变成字符串向量,那么如何改变字符串'1','2','3'和“4”到“AA”、“AB”、“CD”、“你好”?谢谢。
      • 还有一步:像names = v(ix) 这样进行多元素索引,其中ix 是您在名称列表中的索引数字向量。然后返回一个cellstr 向量,这是一种存储不同长度字符串数组的方式。
      【解决方案3】:

      您可能希望使用cellstr 数组来存储输出名称,并使用映射表将输入转换为输出。

      % List of labels that correspond to the indexes of the array
      labels = {'AA', 'AB', 'CD', 'Hello'};
      
      % Input vector
      v = [1 2 3 1 4 2];
      
      % Use multi-element indexing with () instead of {} to map them
      strs = labels(v);
      

      您将得到一个与输入大小相同的cellstr 数组,其中包含与每个元素中的索引值相对应的标签。您可以像 strs{3} 一样对其进行索引以获取各个标签。

      【讨论】:

      • 太棒了!谢谢安德鲁。
      猜你喜欢
      • 2021-12-12
      • 1970-01-01
      • 2019-05-01
      • 2022-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      相关资源
      最近更新 更多