Get number after colon

1 vue (au cours des 30 derniers jours)
Dion Theunissen
Dion Theunissen le 28 Juil 2021
Commenté : Peter Perkins le 29 Juil 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 commentaires
Dion Theunissen
Dion Theunissen le 28 Juil 2021
Check out the attachment
Cris LaPierre
Cris LaPierre le 28 Juil 2021
Please share the code you use to import this data into MATLAB.

Connectez-vous pour commenter.

Réponse acceptée

DGM
DGM le 29 Juil 2021
Modifié(e) : DGM le 29 Juil 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 commentaire
Peter Perkins
Peter Perkins le 29 Juil 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Data Type Identification dans Help Center et File Exchange

Produits


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by