2014-03-25 77 views

回答

1

易peasy,使用cell array,例如:

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

然后尝试,

v{1} 

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

编辑:这是平行的:

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

但我已经得到一个数值向量(1,2,3,4)和我需要1个换成AA,2个换成AB,3个换成CD,4个换成Hello。 – Jack2007

+0

是你的矢量只有4个元素长?请问一个更确切的问题......无论如何,因为#元素不是常量(AA vs Hello),要做到这一点的方法是创建一个单元阵列。你不能使用数字向量来承载一个可变长度的字符串。 (也请参阅我的编辑) – bla

+0

我可以这样做:使用'num2str'将数字向量更改为字符串。假设数值向量是A =(1,2,3,4),那么S = num2str(A),它将变成一个字符串向量,然后如何改变字符串'1','2','3'和'4'到'AA','AB','CD','你好'?谢谢。 – Jack2007

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}那样索引它以获取单个标签。

+0

太棒了!谢谢安德鲁。 – Jack2007

2

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' 
相关问题