String to number from array

5 vues (au cours des 30 derniers jours)
Nicle Davidson
Nicle Davidson le 23 Sep 2021
Commenté : Nicle Davidson le 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)

Réponse acceptée

Konrad
Konrad le 23 Sep 2021
Modifié(e) : Konrad le 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 commentaires
Konrad
Konrad le 23 Sep 2021
Then you allready converted the string to a number (note that for str2num() the input cannot be a cellstring).
Also consider Chunrus answer if your text file exclusively contains numbers as indicated in your question and if you don't need to read the file line-by-line. Then simply using load(filename,'-ascii') might also be a solution.
Nicle Davidson
Nicle Davidson le 23 Sep 2021
Yes, and thank you for both answers! It helped

Connectez-vous pour commenter.

Plus de réponses (1)

Chunru
Chunru le 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

Catégories

En savoir plus sur Data Type Conversion dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by