Matlab - удаление извлечения определенных символов/чисел из символьных ячеек в массиве ячеек

У меня есть массив ячеек Matlab, A ‹118080 x 1 cell>, который выглядит примерно так:

"Point 1"
"Point 2"
"Point 3"
...
"Point 1230"

Ячейки представляют собой символьные ячейки размером от 1x9 до 1x12.

Мне нужно отделить числа из этих полей, чтобы получить матрицу 118080 x 1, например:

1
2
3
...
1230

Любая помощь будет принята с благодарностью.

Лучший

Сэм (новичок в Matlab)


person IdleSam    schedule 20.09.2013    source источник


Ответы (2)


cellfun(@(x)(x(7:end)), A, 'UniformOutput', false)

или если вы хотите, чтобы они были числами, то

cellfun(@(x)(str2num(x(7:end))), A)
person Dan    schedule 20.09.2013
comment
Привет Дэн! Спасибо за помощь, есть небольшое продолжение. В идеале они мне нужны как числа, но когда я использую предложенную вами формулу, я получаю сообщение: Ошибка при использовании нескалярного целевого числа в универсальном выводе, индекс 1, вывод 1. Установите для параметра «UniformOutput» значение false. Вместо этого я попытался использовать исходную формулу, как было предложено, и получил список вроде 1,2,3,4 ... 1230 Я не думаю, что у вас есть какие-либо мысли? - person IdleSam; 20.09.2013
comment
@IdleSam конечно, просто добавьте ,'UniformOutput', false) в конец второго метода - person Dan; 20.09.2013
comment
Неважно, я напечатал раньше, чем подумал. Я только что изменил ваш исходный код для чисел на cellfun(@(x)(str2num(x(7:end-1))),A), и это дало мне именно то, что мне было нужно. Большое спасибо Дэн! - person IdleSam; 20.09.2013

Решение без cellfun, использующее regexp (здесь сохраняются только числа)

A = {'Point 1'
     'Point 222'
     'Point 33333'}

B = regexp(A, '\d+', 'match');  %produce a cell array of numbers in string format

Если вы хотите преобразовать ячейки в матрицу

B = str2double([B{:}])';        %convert to numbers
person marsei    schedule 20.09.2013