Borrar filtros
Borrar filtros

Get number after colon

8 visualizaciones (últimos 30 días)
Dion Theunissen
Dion Theunissen el 28 de Jul. de 2021
Comentada: Peter Perkins el 29 de Jul. de 2021
I have a text with numbers column in a table. Now i want to only select the numbers after a colon (:)
I have no idea where to start, kan anyone help me? The table looks like this:
Now i want to check column 1 and read only the numbers behind a :
So row 1 I need 34.94, skip untill row 5, get 34.94 and so on.
  3 comentarios
Dion Theunissen
Dion Theunissen el 28 de Jul. de 2021
Check out the attachment
Cris LaPierre
Cris LaPierre el 28 de Jul. de 2021
Please share the code you use to import this data into MATLAB.

Iniciar sesión para comentar.

Respuesta aceptada

DGM
DGM el 29 de Jul. de 2021
Editada: DGM el 29 de Jul. de 2021
I don't know that I'd bother trying to directly operate on the table. Maybe there are tools that make that easier, but I never use tables. If the relevant column is extracted as a cell vector of chars or as a column vector of strings, then regexp() can be used:
extracted = {'blah blah blah (blah): 23.345 blah blah blah';
'blah blah blah (blah):23.34 blah 123 blah';
'blah blah blah'}
extracted = 3×1 cell array
{'blah blah blah (blah): 23.345 blah blah blah'} {'blah blah blah (blah):23.34 blah 123 blah' } {'blah blah blah' }
out = regexp(extracted,'(?<=: *)[0-9]+(\.[0-9]+)?','match');
format compact; celldisp(out) % just for web display
out{1}{1} = 23.345 out{2}{1} = 23.34 out{3} = {}
... at which point it can be inserted into the table or whatever else is required for further processing. If you want a numeric vector:
out = cellfun(@str2double,out,'uniform',false);
out(cellfun(@isempty,out)) = {0}; % replace empty elements with zero (or use NaN if you want)
out = vertcat(out{:})
out = 3×1
23.3450 23.3400 0
  1 comentario
Peter Perkins
Peter Perkins el 29 de Jul. de 2021
DGM, you are correct. This is what dot subscripting on tables is for:
x = t.X;
<lengthy multiple-line computation on x to create y>
t.Y = y;
It may be that the computations are short enough that you can just do the subscripting in-line:
t.Y = <some calculation on t.X>
And of course this all assumes that y is the same length as x.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Data Type Identification en Help Center y File Exchange.

Productos


Versión

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by