как найти разницу между массивом ячеек и простым целочисленным массивом в 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], где результатом является простой массив, сохраняющий целые числа.


person Afzaal Ahmad    schedule 16.03.2015    source источник


Ответы (1)


Функция, которую вы ищете, это 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, и применить ту же методологию.

Eg:

AllSentences = {1:23};
NotPresent = setdiff(cell2mat(AllSentences),result)
person Benoit_11    schedule 16.03.2015