2014-03-27 37 views
-1

嗨,我正在研究一個機器學習項目,但我堅持將整個數據集列從文本數據轉換爲matlab中的二進制數據。如何將整個數據集列從文本數據轉換爲matlab中的二進制數據

例如,如果列包含的是什麼類型的網站是喜歡描述:

art_entertainment 
culture_politics 
recreation 
computer_internet 
science_technology 
health 
religion 

所以在上面的例子中有7種不同類型的權利每個人應該以二進制這樣表示:

art_entertainment: 0000001 
culture_politics: 0000010 
recreation :0000100 
computer_internet: 0001000 
science_technology: 0010000 
health: 0100000 
religion: 1000000 

我需要一個MATLAB代碼爲這個請,如果有人能幫助我

+0

這不是很清楚,我想要做什麼。你想讀一串字符串並將每個字符串映射到一個二進制數字?這些數字是已知的,或者每次找到新字符串時都需要添加一個新數字?或者,這些選項是否列出了唯一可能的字符串和數字? –

+0

是的,我想讀取一串字符串並將每個字符串映射到一個二進制數。沒有這些數字沒有給出。我們必須在循環繼續時插入。如果相同的字符串出現在循環中,它必須插入相同的二進制數。我只是把它作爲一個例子,它應該是這樣。這個例子的意思是,如果art_entertainment給出了0000001,那麼下一個字符串應該給出0000010. – Hari

回答

0

假設你有一個單元陣列,這樣您的輸入字符串:

strings = { 
    'art_entertainment' 
    'culture_politics' 
    'recreation' 
    'computer_internet' 
    'science_technology' 
    'health' 
    'religion' 
}; 

那麼你可以做這樣的:

bins = dec2bin(cellfun(@(string) find(strcmp(string, unique(strings, 'stable')), 1, 'first'), strings), 8); 

這將是結果:

00000001 
00000010 
00000011 
00000100 
00000101 
00000110 
00000111 

如果有重複的條目,其中第一個二進制數將它也適用使用。例如,如果字符串:

strings = {'a' 'b' 'c' 'a' 'b'}; 

其結果將是:

00000001 
00000010 
00000011 
00000001 
00000010 
+0

您能告訴我如何從數據集的列中讀取字符串,並且如果相同的字符串重複則需要忽略它。我有.mat格式的數據集,例如train.mat格式,所以你能告訴我怎麼做。我是matlab新手請不要介意。 – Hari

+0

在我按照上面所說的完成操作之後,我想要列中的所有二進制文件,並且在相同的地方,它們的尊重字符串在列中的哪裏 – Hari

相關問題