Reading data row by row into matlab.

58 vues (au cours des 30 derniers jours)
Jorge Guzman
Jorge Guzman le 21 Fév 2019
Commenté : Yasir Iqbal le 16 Nov 2021
I need to read a text file, row by row, into different variables for the first 5 rows. Afterwards an N x M matrix needs to be read in. Is there a simple way to do this? I've tried to use textrfead, fopen, etc, but can't figure out how to get just the numbers I need.
this would be a sample file:
8
10
12 15 12 18 17 19 14 16
200 155 487 632 526 321 845 80
52 41 78 62 32 45 67 85 29 10 15
followed by a matrix of size 8 x10 (the matrix will always be size of the first two inputs)
Sorry, I uploaded two sample files. I know how to read in everything but the matrix at the end. That's what I need help retrieving from the files.
  2 commentaires
Kevin Chng
Kevin Chng le 22 Fév 2019
It is a bit confusing about
for the first 5 rows. After words an N x M matrix needs to be read in.
I guess you are only wanted to read certain line in your text file.
If you could upload your text file, and let us know which line you want to read, i can try to write the code for you here.
Jorge Guzman
Jorge Guzman le 29 Mar 2019
I uploaded sample files. I can read everything except for line 6 onward as a matrix. I need to be able to read in different sized matrices.

Connectez-vous pour commenter.

Réponse acceptée

Stephen23
Stephen23 le 22 Fév 2019
Modifié(e) : Stephen23 le 22 Fév 2019
Why not just use dlmread ?:
>> M = dlmread('test.txt','',2,0)
M =
12 15 12 18 17 19 14 16 0 0 0
200 155 487 632 526 321 845 80 0 0 0
52 41 78 62 32 45 67 85 29 10 15
I had to create my own test file (attached) based on your description because you did not provide one. If you upload a sample file then it makes it easier for us to help you, and faster for you to get the results that you want.
  1 commentaire
Jorge Guzman
Jorge Guzman le 29 Mar 2019
Thank you, this works i just needed to offset by 5. since the matrix is found on the 6th line and onward!

Connectez-vous pour commenter.

Plus de réponses (1)

Are Mjaavatten
Are Mjaavatten le 22 Fév 2019
I often find it useful to read the file into a cell array of strings using textscan. Then I can easily experiment with how to best parse each line. In your case, this resulted in:
fid = fopen(filename);
lines = textscan(fid,'%s','delimiter','\n');
fclose(fid);
lines = lines{1};
n = sscanf(lines{1},'%d');
m = sscanf(lines{2},'%d');
% parse lines 3-5
M = zeros(n,m);
for i = 1:n
M(i,:) = sscanf(lines{5+i},'%f')';
% Alternatively:
% M(i,:) = str2num(lines{5+i});
end

Community Treasure Hunt

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

Start Hunting!

Translated by