Matlab中多个文件中的唯一词

Matlab中多个文件中的唯一词,matlab,Matlab,我使用unique函数计算了单个文件中的唯一单词及其频率 fid = fopen(filename); words = textscan(fid, '%s'); status = fclose(fid); unique_words = unique(words{1,1}); frequencies = zeros(numel(unique_words), 1); for i = 1:numel(unique_words) if max(unique_words{i} ~= ' ')

我使用unique函数计算了单个文件中的唯一单词及其频率

fid = fopen(filename);

words = textscan(fid, '%s');

status = fclose(fid);

unique_words = unique(words{1,1}); 

frequencies = zeros(numel(unique_words), 1);

for i = 1:numel(unique_words)
if max(unique_words{i} ~= ' ')
    for j = 1:numel(words{1,1})
        if strcmp(words{1,1}(j), unique_words{i})
            frequencies(i) = frequencies(i) + 1;                      
        end
    end
end
end
有谁能告诉我,我怎样才能为多个文件做到这一点?我是说如果我有四份文件?而且,当我在单个文件中列出了唯一的单词后,我如何通过Matlab代码检查哪些单词在每个文件中出现了多少次

谢谢

您可以这样做:

function [frequencies] = calc_unique_words(filename)
fid = fopen(filename);

words = textscan(fid, '%s');

status = fclose(fid);

unique_words = unique(words{1,1}); 

frequencies = zeros(numel(unique_words), 1);

for i = 1:numel(unique_words)
if max(unique_words{i} ~= ' ')
    for j = 1:numel(words{1,1})
        if strcmp(words{1,1}(j), unique_words{i})
            frequencies(i) = frequencies(i) + 1;                      
        end
    end
end
end
然后在另一个文件中,说“main.m”,执行以下操作: 确保您的文件名列在顶行:

fileNames = {'f1.txt' , 'file2.bcd', 'filename3.txt','theLastFilename.csv'}
for ii = 1:numel(fileNames)
    freq_cell{ii} = calc_unique_words(fileNames{ii});
end

将上述代码放入函数文件中,并从for循环内部调用此函数,迭代文件名。关于你的编辑:你应该在一个单独的问题中问这个问题。嘿,NKN谢谢你的帮助,但是函数:function[frequencies]=calc_unique_words(文件名)是一个文件吗?因为我希望对多个文件这样做。。。再次感谢………该函数是您自己的代码,然后您将多次使用它。您的意思是,所有四个文件或多个文件都将放在您提到的最后一个freq_cell函数中,对吗?首先,将第一个函数复制粘贴到一个.m文件,并将其保存为“calc_unique_words.m”文件。然后,制作另一个名为“main.m”的文件副本,粘贴ii=1:4。。。。部分如果运行main.m文件,它将为列表中的每个文件调用calc_unique_words函数。您需要根据文件名更改代码中的文件名,并且还应确保matlab文件和其他文件位于同一路径中。