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-это не число, а символ. Как я могу пройти через каждую отдельную ячейку, взять кавычки из ячейки и преобразовать записи, которые являются числами, в реальные числа?

571   2  

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

    Ничего не найдено.