How to create a matrix from a txt file with variable column numbers?
    4 views (last 30 days)
  
       Show older comments
    
    Diogo Nascimento
 on 11 Apr 2016
  
    
    
    
    
    Commented: Diogo Nascimento
 on 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 Comments
Accepted Answer
  Walter Roberson
      
      
 on 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 Comments
  Walter Roberson
      
      
 on 12 Apr 2016
				Change
     num_ent = fscanf(file, '%f');
to
     num_ent = fscanf(file, '%f', 1);
More Answers (0)
See Also
Categories
				Find more on Creating and Concatenating Matrices in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

