【发布时间】:2014-04-04 09:23:56
【问题描述】:
我有一个向量,(1,2,3,4),我想用'AA' 标记1,用'AB' 标记2,用'CD' 标记3,用'Hello' 标记4,等等。它应该像一个向量('AA','AB','CD','Hello')。有可能吗?
【问题讨论】:
我有一个向量,(1,2,3,4),我想用'AA' 标记1,用'AB' 标记2,用'CD' 标记3,用'Hello' 标记4,等等。它应该像一个向量('AA','AB','CD','Hello')。有可能吗?
【问题讨论】:
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'
【讨论】:
简单易行,使用cell array,例如:
v = {'AA','AB','CD','Hello'};
那就试试吧,
v{1}
等等。 (注意大括号...{})
编辑:这与:
v{1}='AA';
v{2}='AB'; ...
...
【讨论】:
names = v(ix) 这样进行多元素索引,其中ix 是您在名称列表中的索引数字向量。然后返回一个cellstr 向量,这是一种存储不同长度字符串数组的方式。
您可能希望使用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} 一样对其进行索引以获取各个标签。
【讨论】: