2012-12-14 77 views
1

早些時候,我對如何製作腳本提供了一些幫助,該腳本將從推文列表中提取井號標籤並將它們放入單元格數組中。 我用這個作爲我的代碼,裏面一個for循環MATLAB中單元格中正則表達式的字符數

hashtagCell{i} = regexp(textRead{i}, '#[A-z]*', 'match'); 

這適用於什麼是應該做的,但我現在試圖找到主題標籤的平均字符長度,所以我需要能夠添加由上述功能拉出的每個哈希標籤的字符長度並將它們加在一起。但是,當我嘗試使用size()函數時,它僅給出單元格的大小,而不是字符串的大小,這正是我想要的。我無法弄清楚如何做到這一點。

回答

0

這應有助於(它擺脫任何循環的,比其他,也許用一個創建CellOfText):

%# Example cell array of tweets 
CellOfText = {'Bah #humbug says #Mr scrooge'; 'No #presents for you'}; 

%# Get all hash tags 
HTC = regexp(CellOfText, '#[A-z]*', 'match'); 

%# Get the average hash tag length, being careful to unnest HTC 
AvgLength1 = mean(cellfun('length', [HTC{:}])); 

免責聲明:此方法的靈感來自this excellent answer到類似的問題。感謝@Andrey。

+0

我看到你在這裏做什麼,這是有用的,因爲我不熟悉這個功能。然而,我只能用一個單元格的字符串數組來處理這個問題,在我的情況下,我需要30個平均值。我想如果我能把所有這些都放到一個大字符串中,我就會變成金。 – user1902116

+0

@ user1902116我會更新我的答案。 –

+0

@ user1902116我有一個無循環的解決方案,你應該現在就工作。讓我知道如果它不。訣竅在於[HTC {:}]'系列,它基本上取消了嵌套單元 –

1

對於單一的字符串時,它會是這樣:

%# example string with hashtags. 
MyText = 'this is a #text with #hashtag and also #another hashtag'; 

%# create the hashtagCell. 
hashtagCell = regexp(MyText, '#[A-z]*', 'match'); 

%# compute the mean. 
AverageLength = mean(cellfun(@(x) size(x,2), hashtagCell)); 
+0

+1用於提供適當的'regexp'。我相當確定我的(或者說,@Andrey)獲得平均長度的方法將比你的運行速度快,但:-)查看我提供的有關該主題的有趣閱讀的鏈接。 –

+0

謝謝!我認爲這是行得通的。編輯:它實際上不適合我。我敢肯定,如果我可以把這一切變成一個單一的字符串。 – user1902116

+0

@ user1902116如果它適合您,我們鼓勵您通過單擊答案左側的標誌來接受答案,以便它將顏色更改爲綠色。 – nrz