我需要建立在Matlab的M文件,它包含以下功能的函數:如何創建返回MATLAB的縮寫
function acr = acronym(phrase)
此函數應計算並返回該短語的的縮寫功能的結果;也就是說,如果有人在Matlab中鍵入任何短語,該函數應返回由該短語中每個單詞的首字母組成的首字母縮寫詞。我知道這是一個簡單的功能,但我的編碼經驗是非常有限的,任何幫助,將不勝感激;提前致謝。
我需要建立在Matlab的M文件,它包含以下功能的函數:如何創建返回MATLAB的縮寫
function acr = acronym(phrase)
此函數應計算並返回該短語的的縮寫功能的結果;也就是說,如果有人在Matlab中鍵入任何短語,該函數應返回由該短語中每個單詞的首字母組成的首字母縮寫詞。我知道這是一個簡單的功能,但我的編碼經驗是非常有限的,任何幫助,將不勝感激;提前致謝。
您可以使用textscan
來讀取格式化的文本文件以及格式化的字符串。然後,你就必須保持每個單詞的第一個字母:
phrase='ceci est une phrase';
words=textscan(phrase,'%s','delimiter',' ');
words=words{:};
letters=cellfun(@(x) x(1),words);
acronym=upper(letters');
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
編輯:只注意到一個非常類似的答案已經給出!
這是使用正則表達式的好地方。函數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
Upvoted,我喜歡這個答案比我多!井井有條。 – n00dle
感謝您的幫助和快速回復大家;這些功能就像一個魅力(特別是來自AValenzuela的最後兩個)。再次感謝您花時間和精力來幫助我;對此,我真的非常感激。 –
@OM - 如果這是正確的解決方案,請點擊答案旁邊的複選標記以正式接受它。 –