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-это не число, а символ. Как я могу пройти через каждую отдельную ячейку, взять кавычки из ячейки и преобразовать записи, которые являются числами, в реальные числа?
2 ответов:
Вы можете использовать table2cell для преобразования его в ячейку. Назовем эту ячейку массивом x; затем используем регулярное выражение для обнаружения чисел (я, кажется, помню, что есть более простой способ сделать этот шаг, но не помню точную функцию).
isNumeric = @( c) ~isempty( regexp(c,'^\d*$'))После этого примените его ко всему массиву ячеек
idx = cellfun(isNumeric,x)Примените str2num к ячейкам, которые были числовыми:
x(idx) = cellfun( @str2num , x(idx),'UniformOutput',false)
Есть
str2numфункция в Matlab преобразует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`
Comments