MATLAB обработка строк - PullRequest
2 голосов
/ 22 марта 2012

Я хочу вычислить частоту каждого слова в строке.Для этого мне нужно превратить строку в массив (матрицу) слов.

Например, взять "Hello world, can I ask you on a date?" и превратить его в

['Hello' 'world,' 'can' 'I' 'ask' 'you' 'on' 'a' 'date?']

Тогда я могу просмотреть каждую запись и посчитатькаждое появление конкретного слова.

Есть ли способ сделать массив (матрицу) слов в MATLAB вместо массива просто символов?

Ответы [ 3 ]

4 голосов
/ 22 марта 2012

Вот немного проще regexp:

words = regexp(s,'\w+','match');

\w здесь означает любой символ, который может появляться в словах (включая подчеркивание).

Обратите внимание, что последний знак вопроса не будет включен. Вам это нужно для подсчета слов на самом деле?

4 голосов
/ 22 марта 2012

Регулярные выражения

s = 'Hello world, can I ask you on a date?'
slist = regexp(s, '[^ ]*', 'match')

выход

slist = 

'Hello'    'world,'    'can'    'I'    'ask'    'you'    'on'    'a'    'date?'
0 голосов
/ 22 марта 2012

Еще один способ сделать это так:

s = cell(java.lang.String('Hello world, can I ask you on a date?').split('[^\w]+'));

т.е. путем создания объекта Java String и использования его методов для выполнения работы, а затем преобразования обратно в массив строк. Не обязательно лучший способ сделать работу такой простой, но Java имеет богатую библиотеку методов и классов обработки строк, которые могут пригодиться.

Способность Matlab переключаться на Java без промедления может иногда оказаться полезной - например, при разборе и написании XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...