2011-04-14 108 views
3

這是我的問題。 我做了一個算法,使某些單詞的排列。我用一個數值替換每個單詞,這樣我就可以對它們進行算術運算(例如1 ='香蕉'2 ='孩子'3 ='汽車'4 ='樹'等)。 假設運行一個算法後,matlab給了我這個矩陣作爲結果: ans = [2,2,1; 4,3,3] 我永遠無法知道的是如何告訴他 - 用符號替代數字並且寫下:如何將數字結果轉換爲符號或字符串?

ans = [child,child,banana;樹,車,車] - 所以我不必查看圖表中的每個數字,並用相應的單詞替換它!?

回答

1

如果你有你這句話的數組,並與指數另一個數組,可以產生與對應的字,像這樣替換各項指標的數組:

words = {'banana','child','car','tree'}; 

numbers = [2 2 1;4 3 3]; 

>> words(numbers) 
ans = 
    'child' 'child' 'banana' 
    'tree'  'car'  'car' 
+0

狗屎 - 我用了零!現在怎麼辦?!它說下標指數必須是真正的正整數或邏輯。我真的想避免重寫算法中的所有命令......如果可能的話 – Davor 2011-04-14 17:58:19

+0

@Davor:如果代碼只是從0開始而不是1開始計數,那麼使用'numbers + 1'來索引。如果零表示空格或虛擬單詞,請在虛擬單詞前面加上「單詞」,並使用「數字+ 1」進行索引。 – Jonas 2011-04-14 18:12:06

+0

非常感謝 - 我寫了A = ones(m,n),並將它添加到我使用的矩陣中 - 它功能非常好。我終於可以從我的作品開始。 – Davor 2011-04-14 19:21:49

1

您還可以使用ordinal數據類型如果你有統計工具箱。

>> B = ordinal([2 2 0; 4 3 3], {'banana','child','car','tree'}) 
B = 
    child  child  banana 
    tree  car  car  

請注意,它會自動處理零。然後你可以做這樣的事情:

>> B=='child' 
ans = 
    1  1  0 
    0  0  0 
+0

哦,謝謝你豐富的C!我希望你不介意,但我已經給喬納斯投了票。這也很有幫助。 – Davor 2011-04-14 21:42:01

+0

很整潔!不知道這個功能。看起來像索引<= 1,它設置爲第一個標籤和索引> =最大#標籤,將其設置爲最後一個標籤。例如,用「-1 -1 5」代替第一行返回「香蕉香蕉樹」。 – abcd 2011-04-15 17:07:55

+0

@yoda:矩陣中的#個唯一元素必須與標籤的數量相匹配。該分配基於排序的「排序」矩陣中的獨特元素。如果你的數據沒有自然順序,你可以使用catagorical數組。 – 2011-04-15 17:23:09

相關問題