how to extract double value from a string?

I been trying to figure our how to extract certain numbers from a string with this layout:
D:\MATLAB\noise_check\bilder\Image_230217_1227_Temp_ 42,75.png"
I want to extract the value 42.75 from it. Any ideas how I can do this?
I tried this but it gives me NaN as result:
V = str2double(regexp(fullFileNames,'\d+','match'))
This gives error "Error using sscanf, first argument mustnbe a text scalar".
d = sscanf(fullFileNames, '%d %d %d')
Thanks

 採用された回答

Dyuman Joshi
Dyuman Joshi 2023 年 2 月 17 日
移動済み: Star Strider 2023 年 2 月 17 日

0 投票

"I tried this but it gives me NaN as result: "
Does it? Let's check -
str = "D:\MATLAB\noise_check\bilder\Image_230217_1227_Temp_ 42,75.png";
V = str2double(regexp(str,'\d+','match'))
V = 1×4
230217 1227 42 75
out = str2double(replace(regexp(str, '\d+,\d+', 'match'),',','.'))
out = 42.7500

1 件のコメント

Happy PhD
Happy PhD 2023 年 2 月 17 日
編集済み: Happy PhD 2023 年 2 月 17 日
My strings are an cell array so maybe thats why it doesn't work.

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

その他の回答 (1 件)

Luca Ferro
Luca Ferro 2023 年 2 月 17 日
編集済み: Luca Ferro 2023 年 2 月 17 日

0 投票

assuming the string is always formatted as such you could just:
s='D:\MATLAB\noise_check\bilder\Image_230217_1227_Temp_ 42,75.png'
numS=s(end-8:end-4);
numS2D=replace(numS(',','.'); %necessary since the conversion to double needs . and not ,
numD=str2double(numS2D)

2 件のコメント

VBBV
VBBV 2023 年 2 月 17 日
s='D:\MATLAB\noise_check\bilder\Image_230217_1227_Temp_ 42,75.png'
s = 'D:\MATLAB\noise_check\bilder\Image_230217_1227_Temp_ 42,75.png'
numS=s(end-8:end-4)
numS = '42,75'
numS2D=replace(numS,',','.'); % may be you mean this
numD=str2double(numS2D)
numD = 42.7500
Luca Ferro
Luca Ferro 2023 年 2 月 17 日
yep, typo. Thanks for the correction

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

カテゴリ

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

製品

リリース

R2021b

タグ

質問済み:

2023 年 2 月 17 日

コメント済み:

2023 年 2 月 17 日

Community Treasure Hunt

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

Start Hunting!

Translated by