2011-09-24 27 views
-1

我需要建立在Matlab的M文件,它包含以下功能的函數:如何創建返回MATLAB的縮寫

function acr = acronym(phrase) 

此函數應計算並返回該短語的的縮寫功能的結果;也就是說,如果有人在Matlab中鍵入任何短語,該函數應返回由該短語中每個單詞的首字母組成的首字母縮寫詞。我知道這是一個簡單的功能,但我的編碼經驗是非常有限的,任何幫助,將不勝感激;提前致謝。

回答

3

您可以使用textscan來讀取格式化的文本文件以及格式化的字符串。然後,你就必須保持每個單詞的第一個字母:

phrase='ceci est une phrase'; 
words=textscan(phrase,'%s','delimiter',' '); 
words=words{:}; 
letters=cellfun(@(x) x(1),words); 
acronym=upper(letters'); 
2
function output = acronym(input) 
    words_cell = textscan(input,'%s','delimiter',' '); 
    words  = words_cell{ : }; 
    letters = cellfun(@(x) textscan(x,'%c%*s'), words); 
    output  = upper(letters'); 
end 

編輯:只注意到一個非常類似的答案已經給出!

5

這是使用正則表達式的好地方。函數regexp接受一個字符串和一個正則表達式,並返回與正則表達式匹配的每個子字符串的起始索引。在這種情況下,你想要匹配任何啓動單詞的字符。 \<expr匹配expr當它出現在單詞的開頭(請參閱documentation for regexp)。一段時間匹配任何字符。所以匹配任何單詞的第一個字符的正則表達式是\<.。 因此,

regexp(phrase,'\<.') 

將返回指數每個單詞的phrase的第一個字母。因此,一個縮寫功能可能是:

function acr = acronym(phrase) 
    ind = regexp(phrase, '\<.'); 
    acr = upper(phrase(ind)); 
end 

甚至只是

function acr = acronym(phrase) 
    acr = upper(phrase(regexp(phrase, '\<.'))); 
end 
+0

Upvoted,我喜歡這個答案比我多!井井有條。 – n00dle

+0

感謝您的幫助和快速回復大家;這些功能就像一個魅力(特別是來自AValenzuela的最後兩個)。再次感謝您花時間和精力來幫助我;對此,我真的非常感激。 –

+0

@OM - 如果這是正確的解決方案,請點擊答案旁邊的複選標記以正式接受它。 –