How to create a matrix from a txt file with variable column numbers?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Diogo Nascimento
am 11 Apr. 2016
Kommentiert: Diogo Nascimento
am 12 Apr. 2016
Hey there!
I am trying to create a matrix from a txt file that the user inputs that goes like this:
Matrix
4
1 1 3 2 6 1
2 1 4 3 5 2 5
3 1 3 4 8 3
4 1 3 5 1 6
The number in the line after "Matrix" represents the number of lines of the matrix I wanna create.
The number of the 3rd column represent the remaining entries on that line and can only vary between 3 or 4.
I've come up with
tline = fgetl(file);
n = fscanf(file,'%f',1);
matrix = fscanf(file,'%e', [n inf]); % but this puts it into a 1x... Matrix...
Thanks for the help
2 Kommentare
Akzeptierte Antwort
Walter Roberson
am 12 Apr. 2016
tline = fgetl(file);
n = fscanf(file, '%f', 1);
for K = 1 : n
rownum = fscanf(file, '%f', 1);
col_offset = fscanf(file, '%f', 1);
num_ent = fscanf(file, '%f');
data_for_row = fscanf(file, '%f', [1 num_ent]);
data(rownum, col_offset + (0:num_ent-1)) = data_for_row;
end
This will pad shorter rows with 0. I had to guess at the meaning of the fields.
3 Kommentare
Walter Roberson
am 12 Apr. 2016
Change
num_ent = fscanf(file, '%f');
to
num_ent = fscanf(file, '%f', 1);
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Tables 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!