Index exceeds matrix dimensions.

2 次查看(过去 30 天)
Hi, I'm trying to read the raw data from a txt file. Read the file as an array of strings. Then transfer string to num and get the year data. But it shows that the index exceeds matrix dimensions. Anyone help?
filename = input('Please enter the file name: ');
fid01 = fopen(filename,'r');
for i = 6 : 414
line = fgets(fid01);
z = strread(line,'%s');
year = str2num(z{1});
disp(year)
end
[EDITED, Jan, Code formatted]

采纳的回答

Walter Roberson
Walter Roberson 2016-2-18
You have an empty lines in the input, and lines that have only blanks. fgets() is going to return each line including the line terminator. The strread() with '%s' format is going to return an empty cell array on those lines.
I would remind you that
for i = 6 : 414
line = fgets(fid01);
...
end
contains no instructions to MATLAB that the line to be fetched is the line number the corresponds to "i".
What you should do is, before the "for i = 6" loop, add a loop
for i = 1 : 5
line = fgets(fid01);
end
to read through (and ignore) lines 1 to 5. Then each time you read a line in "for i = 6 : 414" the line number will implicitly synchronize with the value of the "i" variable.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Workspace Variables and MAT-Files 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by