String to number from array

1 view (last 30 days)
Nicle Davidson
Nicle Davidson on 23 Sep 2021
Commented: Nicle Davidson on 23 Sep 2021
I have a file test.txt which I am reading the content from
the content is such as:
290729 123456
13984 654321
13272 111111
I have it until here:
inn = fgetl(thelist);
while ischar(inn)
disp(inn)
x = strsplit(inn);%I separate the to values in each line
toNum=x(1,1); %want to get first value and convert it to a number
theNum =double(cell2mat(toNum));%this does not work to convert {'290729'} to a number
class(theNum);%trying to find out what is the type after I tried to make a number out of it
inn = fgetl(thelist);
end
I need to convert this value (such as 290729 or 13984 in this case to a number)

Accepted Answer

Konrad
Konrad on 23 Sep 2021
Edited: Konrad on 23 Sep 2021
Hi Nicle
you need str2double() (or str2num()), not double().
double() gives you the UTF(?) code corresponding to the input string. Eg:
double('a') % = 97 or
ans = 97
double('1') % = 49
ans = 49
Conversely:
char([97 49]) % = 'a1'
ans = 'a1'
But:
str2double('1') % = 1
ans = 1
Also str2double() works on cellstrings, no need to for cell2mat():
str2double({'1' '2'}) % = 1 2
ans = 1×2
1 2
Best, Konrad
  3 Comments
Nicle Davidson
Nicle Davidson on 23 Sep 2021
Yes, and thank you for both answers! It helped

Sign in to comment.

More Answers (1)

Chunru
Chunru on 23 Sep 2021
You can use "readmatrix" function:
% Generate the data file
a = [290729 123456
13984 654321
13272 111111];
writematrix(a, 'test.txt', 'Delimiter', ' ')
type test.txt
290729 123456 13984 654321 13272 111111
% Read the .txt file
b = readmatrix('test.txt')
b = 3×2
290729 123456 13984 654321 13272 111111

Community Treasure Hunt

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

Start Hunting!

Translated by