差集运算在matlab中的应用?

差集运算在matlab中的应用?,matlab,Matlab,我从文本文件中提取了23个句子,以及从同一文本文件中提取的6个最常见的单词。我已经实现了显示哪个单词出现在哪个句子中的逻辑,以及哪个单词出现在其他一组常用单词中的逻辑,下面的代码和输出说明了逻辑: OccursTogether = cell(length(Out1)); for ii=1:length(Out1) for jj=ii+1:length(Out1) OccursTogether{ii,jj} = intersect(Out1{ii},Out1{jj}); end end celld

我从文本文件中提取了23个句子,以及从同一文本文件中提取的6个最常见的单词。我已经实现了显示哪个单词出现在哪个句子中的逻辑,以及哪个单词出现在其他一组常用单词中的逻辑,下面的代码和输出说明了逻辑:

OccursTogether = cell(length(Out1));
for ii=1:length(Out1)
for jj=ii+1:length(Out1)
OccursTogether{ii,jj} = intersect(Out1{ii},Out1{jj});
end
end
celldisp(OccursTogether)
Out1是一个一维数组,它显示单词和句子,它们以数字形式出现。我用setdiff代替intersect,但没有得到我需要的结果。句子存储在句子变量中,如下所示:

sentences = regexp(F,'\S.*?[\.\!\?]','match')
char(sentences)
下面的occurstogether向我展示了第5句中第一个单词和它自己一起出现,第5句和第6句中第一个单词和第二个单词一起出现,依此类推:

occurstogether{1,1} = 5
occurstogether{1,2} = 5 6
occurstogether{1,3} = 6 9 20 and so on....
我想做的是找出这些词不会同时出现的地方,如下所示:

notogether{1,1} = 1 2 3 4 6 7,...23
notogether{1,2} = 1 2 3 4 7,...23
notogether{1,3} = 1 2 3 4 5 7 8 10...22
记住这1,2,3,…23是一对单词同时出现的句子数,如果它们不同时出现,输出将显示空{}

尝试以下方法:

occurstogether{1,1} = [5];
occurstogether{1,2} = [5 6];
occurstogether{1,3} = [6 9 20];
N = 23;

result = cellfun(@(x) setdiff(1:N, x), occurstogether, 'uniformoutput', 0);
result
的每个单元格将包含一个排序向量,不重复,如所示。如果要更改该行为,请参见
setdiff
的选项