如何在matlab中区分单元格数组和简单整数数组?

时间:2015-03-16 17:55:53

标签: arrays matlab

我从文本文件中提取了23个句子,这些句子被分割并在单独的行中显示,每个句子按升序给出一个数字{1,2,3,...},我使用的代码如下:

sentences = regexp(F,'\S.*?[\.\!\?]','match')
char(sentences)

现在我做了一些处理并得到了过滤后的答案,其中显示了句子的子集,如下所示:

result = 1  4  5  9  11  14  16  17

我用于结果的代码如下:

result = unique([OccursTogether{:}]);
display(result)

现在我要做的是显示结果变量中不存在的句子,例如我需要的结果如下:

result2 = 2 3 6 7 8 10 12 13 15 18 19 20 21 22 23

记住句子是[1 * N]单元格,其结果是简单的数组保存整数。

1 个答案:

答案 0 :(得分:0)

您正在寻找的功能是setdiff

%// Create an array containing the indices of all the sentences
AllSentences = 1:23;

%// Indices of sentences present
result = [1 4 5 9 11 14 16 17]

%// And not present
NotPresent = setdiff(AllSentences,result)

NotPresent =

  Columns 1 through 13

     2     3     6     7     8    10    12    13    15    18    19    20    21

  Columns 14 through 15

    22    23

我不确定什么是单元格数组,什么不是,但对于单元格数组,您可以使用cell2mat将它们转换为数字数组并应用相同的方法。

例如:

AllSentences = {1:23};
NotPresent = setdiff(cell2mat(AllSentences),result)