Преобразование ячейки в массив в matlab

у меня есть определенная ячейка размером 400x1. Она в основном состоит из чисел в виде строки. Я имею в виду, когда я делаю

mycell{1}

это дает результат '1'

Итак, вы видите число 1 в виде строки. Как я могу преобразовать это в числовой массив?

3 ответов


для size(mycell) это 400x1 . . . . .

str2num(cell2mat(mycell))

... или как это, если размер 1x400

str2num(cell2mat(mycell'))

однако это вызовет проблемы, если любая из ваших строк содержит другое количество символов, т. е.

mycell{1} = '2'
mycell{2} = '33'

если у вас есть такое дело,

str2double(mycell)

...вроде все, как уже упоминалось в другой ответ!


str2double(mycell)

при условии, что у вас есть множество вещей, которые выглядят как двойники:

>> c = {'1' '2' ; '3' '4'}

c = 

    '1'    '2'
    '3'    '4'

>> str2double(c)

ans =

     1     2
     3     4

>> whos ans
  Name      Size            Bytes  Class     Attributes

  ans       2x2                32  double              

если у вас есть что-то, что не выглядит как двойные, вы получите NaN в этой ячейке в результате:

>> c{2,2} = 'aei'

c = 

    '1'    '2'  
    '3'    'aei'

>> str2double(c)

ans =

     1     2
     3   NaN

также вы можете попробовать cellfun(@str2num,mycell) Если у вас есть массив ячеек Double:

mycell = {'1.56548524'; '1.5265'; '-4.2616' ;'-0.2154' ;'2.15'};

вы можете попробовать

mat = cellfun(@str2num,mycell)