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 件のコメント

Cris LaPierre
Cris LaPierre 2021 年 7 月 28 日
You could look into pattern searching, or regexpPattern. If you share your table, it would be easier to test a solution.
Dion Theunissen
Dion Theunissen 2021 年 7 月 28 日
Check out the attachment
Cris LaPierre
Cris LaPierre 2021 年 7 月 28 日
Please share the code you use to import this data into MATLAB.

サインインしてコメントする。

 採用された回答

DGM
DGM 2021 年 7 月 29 日
編集済み: DGM 2021 年 7 月 29 日

0 投票

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 件のコメント

Peter Perkins
Peter Perkins 2021 年 7 月 29 日
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.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeTables についてさらに検索

製品

リリース

R2021a

質問済み:

2021 年 7 月 28 日

コメント済み:

2021 年 7 月 29 日

Community Treasure Hunt

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

Start Hunting!

Translated by