How do I extract a number from a string?
1 回表示 (過去 30 日間)
古いコメントを表示
Good afternoon. I have the following problem. I have a matrix of type "Cell" in which there is data of type "string", said data is composed of a non-numeric character (a - U-) and a numeric character. I want to extract the numeric character of each of the cells in the matrix. Below I leave some images of how my matrices are made.
I want to extract the numerical values of all the "cells" of the last column.
the matrix is named "Yp_c"
Thank you.
2 件のコメント
per isakson
2019 年 6 月 22 日
I prefer downloading code/variables, which can be used in testing. Please upload Yp_c and possible more examples in a mat-file.
採用された回答
per isakson
2019 年 6 月 22 日
編集済み: per isakson
2019 年 6 月 22 日
Try this %%-section by section
%%
cac = { 123, 'U 2'; 'Mod3', 789 }; % Sample data
%%
isx = cellfun( @(chr) isa(chr,'char'), cac );
%%
buf = regexp( cac(isx), '\d+', 'match' );
num = cellfun( @str2double, buf, 'uni',false );
%%
cac(isx) = num;
and peek on the result
>> cac
cac =
2×2 cell array
{[123]} {[ 2]}
{[ 3]} {[789]}
>>
After reading "all the "cells" of the last column" more carefully
%%
cac = { 123, 'U 2'; 'Mod3', [] }; % Sample data
%%
isx = cellfun( @(chr) isa(chr,'char'), cac(:,end) );
%%
buf = regexp( cac(isx,end), '\d+', 'match' );
num = cellfun( @str2double, buf, 'uni',false );
%%
cac(isx,end) = num;
and peek on the result
>> cac
cac =
2×2 cell array
{[ 123]} {[ 2]}
{'Mod3'} {0×0 double}
/ R2018b
0 件のコメント
その他の回答 (1 件)
Fikret Dogru
2019 年 6 月 22 日
Hello,
I didn't get your question well but if you want to extract numerical value try cell2mat first or use cell string to get values like Yp_c{:,:} all elements
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Structures についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!