str2double возвращение NaN MATLAB - PullRequest
0 голосов
/ 10 октября 2018

У меня есть вектор типов камней в форме

Rock_1             '1' % What I get after use regexp%
Rock_2             '2' 
.                  . 
.      --------->  . 
.                  .
Rock_n             'n'

Меня интересует номер камня, поэтому мне удалось получить его, используя

Rocks = regexp(P(:,3),'\d*','Match')

ТогдаМне нужно преобразовать массив чисел в матрицу чисел, для статистической обработки.Проблема в том, что после использования str2double я получаю массив, полный NaN.Я не вижу, что я делаю не так.Помогите пожалуйста.

Большое спасибо.

1 Ответ

0 голосов
/ 10 октября 2018

Я думаю, что ваша проблема в том, что вывод regexp представляет собой массив ячеек массивов строк (т. Е. Два уровня инкапсуляции ячеек), но вы хотите, чтобы он был массивом ячеек строк,Вы можете добиться этого, добавив 'once' параметр к вызову regexp.Затем вы получите массив ячеек строк, которые можно передать в str2double:

>> P = {'Rock_1', 'Rock_2', 'Rock_3'};  % Sample data
>> Rocks = regexp(P, '\d*', 'match');   % How you did it above
>> str2double(Rocks)

ans =

   NaN   NaN   NaN

>> Rocks = regexp(P, '\d*', 'match', 'once');  % With the 'once' option
>> str2double(Rocks)

ans =

     1     2     3
...