2014-02-14 147 views
0

我正在嘗試通過變量'docs'循環,該變量是一個包含字符串的單元格數組,我需要做一個for循環來對單元格數組中的術語進行colllects,然後使用命令'lower'並獨一無二地創建一本字典。循環遍歷matlab中的文件

這裏是SP到目前爲止,我已經嘗試過的代碼,我只是得到錯誤

docsLength = length(docs); 

for C = 1:docsLength 
    list = tokenize(docs, ' .,-'); 
    Mylist = [list;C]; 
end 

我得到這些錯誤

Error using textscan 
First input must be of type double or string. 
Error in tokenize (line 3) 
    C = textscan(str,'%s','MultipleDelimsAsOne',1,'delimiter',delimiters); 
Error in tk (line 4) 
    list = tokenize(docs, ' .,-'); 
+0

你能指定你得到的錯誤嗎? –

+0

另外,哪個變量類型是'docs'?它究竟包含什麼? –

+0

其包含短文檔 –

回答

2

一般地,如果你得到一個「的類型必須是」錯誤,這意味着你正在將錯誤的輸入傳遞給一個函數。在這種情況下,您應該查看代碼中發生這種情況的位置(這裏是tokenize,當調用textscan時),然後重新檢查輸入的內容是否與您期望的相同。

由於tokenize不是MATLAB的內置函數,除非您告訴我們該代碼,我們不能說這些輸入應該是什麼。但是,如評論中提到的akfaz,很可能您想要將docs{C}(字符串)傳遞給tokenize而不是docs(單元陣列)。否則,循環就沒有意義了,因爲它只是反覆將相同的輸入docs傳遞到函數中。

還有其他問題與循環:

Mylist = [list; C];將被覆蓋每個迴路包括最新版本的listC,這僅僅是一個數字(循環的指數)。取決於tokenize的輸出結果,Mylist = [Mylist; list]可能會工作,但您應該首先初始化Mylist

Mylist = []; 

for C = 1:length(docs) 
    list = tokenize(docs{C}, ' .,-'); 
    Mylist = [Mylist; list]; 
end 
+0

非常棒,非常感謝! –