2016-02-23 2 views
0

Учитывая таблицу следующего формата в MATLAB:поиск точного совпадения в строке

itemids  keywords 
    1   3D,children,anim,pixar,3D,3D pixar 
    2   3D,4D pixar,3D car 
    ...   ... 

Я хочу, чтобы подсчитать, сколько раз каждое ключевое слово повторяется в каждом элементе. Весь список уникальных ключевых слов можно найти в keywords = {'3D';'Children';'anim';'pixar' ...}. Вывод представляет собой матрицу TF со строками, равными количеству элементов и столбцов, равным length(keywords).

Одна из трудностей здесь заключается в поиске точного соответствия для каждой строки. В настоящее время я использую strcmp(), который, кажется, дает все записи с заданным словом, а не точное соответствие. В моем случае мне нужно было бы различать 3D и 3D pixar.

+0

По крайней мере, дайте нам код, который создает таблицу, чтобы мы могли выполнить некоторые тесты. Однако ваша задача может быть легко решена с помощью комбинации 'strcmp()' и 'cellfun()'. – Alessiox

ответ

0

Это можно сделать с помощью функции ismember в MATLAB. Я предполагаю, что ключевые слова для каждого элемента на самом деле являются одной строкой, и в этом случае вам нужно разделить ключевые слова, прежде чем делать ismember.

relevantKeyWords = {'3D','Children','anim','pixar'}; 
keywordsInItem = strtrim(strsplit(keywordsStr,',')) % Split the words and trim each word 

tmp = ismember(relevantKeywords,keywordsInItem); 

tmp будет иметь размер 1 x длина (соответствующие ключевые слова), указывающий, найдено ли соответствующее ключевое слово.

Смежные вопросы