2012-06-11 1 views
6

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

mycell{1} 

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

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

ответ

5

Нравится, если size(mycell) 400x1. , , , ,

str2num(cell2mat(mycell)) 

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

str2num(cell2mat(mycell')) 

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

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

Если у вас есть такой случай,

str2double(mycell) 

... похоже, это нормально, как указано в другом ответе!

7
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 
+0

+1 -> Это более общий, чем оригинальная часть моего ответа :) – learnvst

3

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

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

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

mat = cellfun(@str2num,mycell)