Character string to numeric vector

Dear all
I am extracting from a file in a for loop information in the following form: ' ( 0.0357 -0.0001 0.0051) ', which is a 1x27 char. I would like to store the three displayed numbers in a the three components of an array so I can use these figures to do mathematical operations. How could I transform them to do so in this case, keeping the minus signs that can appear for different steps of the for loop too?

1 件のコメント

Stephen23
Stephen23 2024 年 9 月 20 日
@Richard Wood: please upload an unaltered sample data file by clicking the paperclip button.

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

回答 (2 件)

Stephen23
Stephen23 2024 年 9 月 20 日
編集済み: Stephen23 2024 年 9 月 20 日

0 投票

txt = ' ( 0.0357 -0.0001 0.0051) '
txt = ' ( 0.0357 -0.0001 0.0051) '
vec = sscanf(txt(3:end),'%f',[1,3])
vec = 1×3
0.0357 -0.0001 0.0051
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
or
vec = sscanf(strtrim(txt),'(%f%f%f',[1,3])
vec = 1×3
0.0357 -0.0001 0.0051
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
Sameer
Sameer 2024 年 9 月 20 日

0 投票

Hi Richard,
To extract the numbers from the string and store them in an array, you can use the "sscanf" function
Here's how you can do it:
% Example string
str = ' ( 0.0357 -0.0001 0.0051) ';
% Use sscanf to extract the numbers
numbers = sscanf(str, ' ( %f %f %f) ');
disp(numbers);
Please refer to the below MathWorks documentation link:
Hope this helps!

カテゴリ

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

質問済み:

2024 年 9 月 20 日

編集済み:

2024 年 9 月 20 日

Community Treasure Hunt

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

Start Hunting!

Translated by