用matlab编写给定一个文本文件,统计其中每个单词出现的次数,并按照出现次数从大到小输出前 N 个单词及其出现次数。包括分支,循环和自定义函数调用
时间: 2024-02-16 09:05:34 浏览: 129
好的,以下是实现该功能的 Matlab 代码,包括了分支、循环和自定义函数调用:
```matlab
% 读取文本文件
fileID = fopen('filename.txt','r');
text = fscanf(fileID,'%s');
fclose(fileID);
% 将文本转换为小写,并去除标点符号
text = lower(text);
text = regexprep(text,'[^\w\s'']','');
% 将文本分割成单词
words = strsplit(text);
% 统计每个单词出现的次数
uniqueWords = unique(words);
counts = zeros(length(uniqueWords),1);
for i = 1:length(uniqueWords)
counts(i) = countWord(words,uniqueWords{i});
end
% 按照出现次数从大到小排序
[sortedCounts,idx] = sort(counts,'descend');
sortedWords = uniqueWords(idx);
% 输出前 N 个单词及其出现次数
N = 10; % 修改此处以输出不同数量的单词
if N > length(sortedWords)
N = length(sortedWords);
end
for i = 1:N
fprintf('%s: %d\n',sortedWords{i},sortedCounts(i));
end
% 自定义函数:统计单词出现次数
function count = countWord(words,word)
count = 0;
for i = 1:length(words)
if strcmp(words{i},word)
count = count + 1;
end
end
end
```
其中,`filename.txt` 是待读取的文本文件名,`N` 是需要输出的单词数量。该程序会将文本转换为小写,并去除标点符号,然后统计每个单词出现的次数,并按照出现次数从大到小排序,最后输出前 N 个单词及其出现次数。程序中使用了 if 分支来确保输出的单词数量不会超过实际存在的单词数量,使用了 for 循环和自定义函数 countWord 来统计单词出现次数。
阅读全文