2014-03-25 75 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' 
相關問題