Read real numbers with textread
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I have to read specific lines in a .txt file and thus I am using the function textread to do so. The problem is that the lines are composed of real numbers and then textread saves it as '0.957' and not as 0.957 (no commas). Because of that, I cannot save these data into a vector. I tried to remove the commas with regexprep but it didn't work. How can I do that? This is my code (that returns an error):
clc;
clear variables;
close all;
file=fopen('takt_times.txt','r');
nlines=0;
while (fgets(file) ~= -1),
nlines = nlines+1;
end
fclose(file);
C = textread('takt_times.txt', '%f','delimiter', '\n');
read1=2;
rowindex=1;
a=zeros(40,1);
i=1;
while rowindex < nlines
cc=C{read1};
a(i)=regexprep(cc,"'", "");
read1=read1+5;
rowindex=rowindex+5;
i=i+1;
end
a
8 Kommentare
Guillaume
am 4 Mai 2018
Note: ' is an apostrophe (or a single quote), a comma is ,.
The code in the question differs from the code in your m file. Which do you use? %f will not output '0.957', %s will.
Reading the file twice (once to count the number of lines, once to parse it) is a waste of time. What exactly do you want to extract from the file?
Akzeptierte Antwort
Guillaume
am 4 Mai 2018
Here's how I'd do it:
wholecontent = fileread('takt_times.txt');
lines = strsplit(wholecontent, '\n')';
linestokeep = lines(3:5:end);
numbers = str2double(linestokeep);
Weitere Antworten (1)
Ameer Hamza
am 4 Mai 2018
Try using textscan() and specify format using '%f'. It will read the data as floating point numbers.
C = textscan('takt_times.txt', '%f','delimiter', '\n');
3 Kommentare
Guillaume
am 4 Mai 2018
textread was deprecated many versions ago, but the two are more or less equivalent, the major difference being that textscan returns a cell array wheras textread returns several output.
You should be using textscan instead of textread but just changing the function will have no effect on how the file is parsed.
Ameer Hamza
am 4 Mai 2018
@NF, the textscan will load entire and separate into different parts using delimiter. So, in this case, you will get a cell array and each cell contains one line from txt file. It is same as what you will get from textread.
Siehe auch
Kategorien
Mehr zu Large Files and Big Data finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!