我需要在Matlab中创建一个包含以下函数的m文件:
function acr = acronym(phrase)
此函数应计算并返回该函数的结果作为短语的首字母缩写词;也就是说,如果有人在Matlab中键入任何短语,则此函数应返回由该短语中每个单词的第一个字母组成的首字母缩写词。我知道这是一个简单的功能,但我的编码经验非常有限,任何帮助都会受到赞赏;提前谢谢。
答案 0 :(得分: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
甚至只是
{{1}}
答案 1 :(得分:3)
您可以使用textscan
来读取格式化的文本文件以及格式化的字符串。然后你只需要保留每个单词的第一个字母:
phrase='ceci est une phrase';
words=textscan(phrase,'%s','delimiter',' ');
words=words{:};
letters=cellfun(@(x) x(1),words);
acronym=upper(letters');
答案 2 :(得分: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
编辑:刚刚注意到已经给出了一个非常相似的答案!