matlab-очистка записей в таблице

В моем рабочем пространстве Matlab класс таблицы содержит ячейки с такими записями внутри них


'206'   '2000'  '.12750'    'N/A'   '36'    '116'   '2006-03-16 00:00:00'   '0'
'180'   '10000' '.10500'    'N/A'   '36'    '116'   '2006-03-13 00:00:00'   '0'

Каждая запись представляет собой символ, например, «206», запись «206», а 206 — это не число, а символ. Как я могу просмотреть каждую ячейку, вынуть кавычки из ячейки и преобразовать записи, которые являются числами, в фактические числа?


person user5531485    schedule 06.11.2015    source источник
comment
Можете ли вы предоставить код для создания минимальной таблицы, подобной той, что у вас есть?   -  person houtanb    schedule 06.11.2015


Ответы (2)


Вы можете использовать table2cell, чтобы преобразовать его в ячейку. Назовем этот массив ячеек x; затем используйте регулярное выражение для обнаружения чисел (кажется, я припоминаю, что есть более простой способ сделать этот шаг, но не помню точную функцию).

isNumeric = @( c) ~isempty( regexp(c,'^\d*$'))

после этого примените его ко всему массиву ячеек

idx = cellfun(isNumeric,x)

применить str2num к ячейкам, которые были числовыми:

x(idx) = cellfun( @str2num , x(idx),'UniformOutput',false)
person rafa    schedule 06.11.2015

В Matlab есть функция str2num, которая преобразует string в numeric данных. Так что единственный вопрос - как получить доступ к значениям из вашего table class.

Если проблема отделить числовые данные от, например, какого-то текста, вы можете использовать функцию ismember таким образом:

a = '3';          %put here code of accessing your needed cell
b='0123456789';
ismember(a,b);    %return 1 if `a` is a member of `b`
person Mikhail_Sam    schedule 06.11.2015