Преобразование ячейки в массив в 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)