我有一个向量,例如,(1,2,3,4),我想将数字更改为字符串

时间:2014-03-25 21:00:18

标签: string matlab vector map

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

3 个答案:

答案 0 :(得分:2)

MATLAB有Map container 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'

答案 1 :(得分:1)

容易愚蠢,使用cell array,例如:

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

然后试试,

v{1}

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

编辑:这与以下内容平行:

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

答案 2 :(得分:1)

您可能希望使用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}一样索引它,以获取各个标签。