How to create a matrix from a txt file with variable column numbers?
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Walter Roberson
2016-4-12
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 个评论
Walter Roberson
2016-4-12
Change
num_ent = fscanf(file, '%f');
to
num_ent = fscanf(file, '%f', 1);
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!